strikethroo 3.17.2 → 3.19.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/dist-web/assets/{arc-C3L1jkFY.js → arc-XmjVSUrZ.js} +1 -1
- package/dist-web/assets/{architectureDiagram-3BPJPVTR-Dc5wdWPF.js → architectureDiagram-3BPJPVTR-BkIMNPZQ.js} +1 -1
- package/dist-web/assets/{blockDiagram-GPEHLZMM-BCqaESV7.js → blockDiagram-GPEHLZMM-CIUhAyCy.js} +1 -1
- package/dist-web/assets/{c4Diagram-AAUBKEIU-DNecSAwM.js → c4Diagram-AAUBKEIU-DHmyXhPl.js} +1 -1
- package/dist-web/assets/channel-BluR9kJ8.js +1 -0
- package/dist-web/assets/{chunk-2J33WTMH-3QS28848.js → chunk-2J33WTMH-CsadzJpE.js} +1 -1
- package/dist-web/assets/{chunk-4BX2VUAB-B6R-x-SN.js → chunk-4BX2VUAB-rdZMTiJd.js} +1 -1
- package/dist-web/assets/{chunk-55IACEB6-BYY5vsbu.js → chunk-55IACEB6-BFgbJmlS.js} +1 -1
- package/dist-web/assets/{chunk-727SXJPM-BZxIJIkN.js → chunk-727SXJPM-CaGOdOo-.js} +1 -1
- package/dist-web/assets/{chunk-AQP2D5EJ-Dwpt8x10.js → chunk-AQP2D5EJ-Dj1Z_buE.js} +1 -1
- package/dist-web/assets/{chunk-FMBD7UC4-BkIlqLqc.js → chunk-FMBD7UC4-ByPFO0XR.js} +1 -1
- package/dist-web/assets/{chunk-ND2GUHAM-BZAfIvWk.js → chunk-ND2GUHAM-CRT0WqT3.js} +1 -1
- package/dist-web/assets/{chunk-QZHKN3VN-wAp9ruCQ.js → chunk-QZHKN3VN-DeBs7Z-A.js} +1 -1
- package/dist-web/assets/classDiagram-4FO5ZUOK-dvsWFqDg.js +1 -0
- package/dist-web/assets/classDiagram-v2-Q7XG4LA2-dvsWFqDg.js +1 -0
- package/dist-web/assets/{cose-bilkent-S5V4N54A-BWhls-Li.js → cose-bilkent-S5V4N54A-8sFxzH_F.js} +1 -1
- package/dist-web/assets/{dagre-BM42HDAG-D_rm5H8p.js → dagre-BM42HDAG-CXKxHlld.js} +1 -1
- package/dist-web/assets/{diagram-2AECGRRQ-CgrRz62Y.js → diagram-2AECGRRQ-DtcDQjmq.js} +1 -1
- package/dist-web/assets/{diagram-5GNKFQAL-BRdPFx5y.js → diagram-5GNKFQAL-C5z5tfjo.js} +1 -1
- package/dist-web/assets/{diagram-KO2AKTUF-CRkShN2W.js → diagram-KO2AKTUF-DzGoK3-W.js} +1 -1
- package/dist-web/assets/{diagram-LMA3HP47-Bxah1b5X.js → diagram-LMA3HP47-CClXYqlA.js} +1 -1
- package/dist-web/assets/{diagram-OG6HWLK6-D9gsqeVI.js → diagram-OG6HWLK6-CCOd6tb5.js} +1 -1
- package/dist-web/assets/{erDiagram-TEJ5UH35-BxuqpCGH.js → erDiagram-TEJ5UH35-DyUNZPGi.js} +1 -1
- package/dist-web/assets/{flowDiagram-I6XJVG4X-CVc346ab.js → flowDiagram-I6XJVG4X-DWE9txcF.js} +1 -1
- package/dist-web/assets/{ganttDiagram-6RSMTGT7-CoV2q8mu.js → ganttDiagram-6RSMTGT7-B-OtEqRy.js} +1 -1
- package/dist-web/assets/{gitGraphDiagram-PVQCEYII-DpBtbvUQ.js → gitGraphDiagram-PVQCEYII-F9vafo91.js} +1 -1
- package/dist-web/assets/{index-DXAUzXLU.js → index-CwMlRsHB.js} +1 -1
- package/dist-web/assets/{index-B5AkN942.js → index-D_5U356C.js} +4 -4
- package/dist-web/assets/{index-qiGGVGhU.js → index-DahCY-9n.js} +1 -1
- package/dist-web/assets/{infoDiagram-5YYISTIA-Cs1LaltR.js → infoDiagram-5YYISTIA-BqiJJ4mQ.js} +1 -1
- package/dist-web/assets/{ishikawaDiagram-YF4QCWOH-2dwQITAJ.js → ishikawaDiagram-YF4QCWOH-BJhigZjk.js} +1 -1
- package/dist-web/assets/{journeyDiagram-JHISSGLW-C5NXwRcO.js → journeyDiagram-JHISSGLW-DbnfMDvR.js} +1 -1
- package/dist-web/assets/{kanban-definition-UN3LZRKU-D8L4UiFp.js → kanban-definition-UN3LZRKU-CWbRbJ6f.js} +1 -1
- package/dist-web/assets/{linear-BmwJXk2t.js → linear-D3Xq7OUM.js} +1 -1
- package/dist-web/assets/{mermaid.core-CxfmFJso.js → mermaid.core-CT0YFN3s.js} +4 -4
- package/dist-web/assets/{mindmap-definition-RKZ34NQL-CCk10yMr.js → mindmap-definition-RKZ34NQL-D6AZLTGR.js} +1 -1
- package/dist-web/assets/{pieDiagram-4H26LBE5-CNaROrHh.js → pieDiagram-4H26LBE5-NGxhfGd1.js} +1 -1
- package/dist-web/assets/{quadrantDiagram-W4KKPZXB-C9eBwT_4.js → quadrantDiagram-W4KKPZXB-jNVzj-DZ.js} +1 -1
- package/dist-web/assets/{requirementDiagram-4Y6WPE33-CuWFUe-Z.js → requirementDiagram-4Y6WPE33-cxYkgHCv.js} +1 -1
- package/dist-web/assets/{sankeyDiagram-5OEKKPKP-xGYYGBDj.js → sankeyDiagram-5OEKKPKP-CO7LMTUX.js} +1 -1
- package/dist-web/assets/{sequenceDiagram-3UESZ5HK-Corn4mP3.js → sequenceDiagram-3UESZ5HK-C8d8VIsZ.js} +1 -1
- package/dist-web/assets/{stateDiagram-AJRCARHV-DP1EwgDv.js → stateDiagram-AJRCARHV-DVxepHih.js} +1 -1
- package/dist-web/assets/stateDiagram-v2-BHNVJYJU-OpTLx_eY.js +1 -0
- package/dist-web/assets/{timeline-definition-PNZ67QCA-DgVY9v5q.js → timeline-definition-PNZ67QCA-Bef04SiL.js} +1 -1
- package/dist-web/assets/{vennDiagram-CIIHVFJN-B47n0Ab2.js → vennDiagram-CIIHVFJN-DlZHmyp0.js} +1 -1
- package/dist-web/assets/{wardley-L42UT6IY-ubK4o7Fl.js → wardley-L42UT6IY-ChkIPtT_.js} +1 -1
- package/dist-web/assets/{wardleyDiagram-YWT4CUSO-ChirN_61.js → wardleyDiagram-YWT4CUSO-D67J0WGX.js} +1 -1
- package/dist-web/assets/{xychartDiagram-2RQKCTM6-Cf8q2_P7.js → xychartDiagram-2RQKCTM6-BoNIIDDe.js} +1 -1
- package/dist-web/index.html +1 -1
- package/package.json +1 -1
- package/templates/harness/skills/st-code-review/SKILL.md +47 -281
- package/templates/harness/skills/st-code-review/scripts/code-review.cjs +2725 -509
- package/templates/harness/skills/st-execute-blueprint/SKILL.md +15 -18
- package/templates/harness/skills/st-execute-blueprint/scripts/dispatch-task-execution.cjs +420 -213
- package/templates/harness/skills/st-execute-task/scripts/dispatch-task-execution.cjs +420 -213
- package/templates/harness/skills/st-full-workflow/SKILL.md +15 -18
- package/templates/harness/skills/st-full-workflow/scripts/dispatch-task-execution.cjs +420 -213
- package/templates/strikethroo/config/config.yaml +95 -6
- package/templates/strikethroo/config/hooks/CODE_REVIEW.md +19 -29
- package/templates/strikethroo/gitignore +13 -10
- package/dist-web/assets/channel-DmY2Krrw.js +0 -1
- package/dist-web/assets/classDiagram-4FO5ZUOK-C91aiCZF.js +0 -1
- package/dist-web/assets/classDiagram-v2-Q7XG4LA2-C91aiCZF.js +0 -1
- package/dist-web/assets/stateDiagram-v2-BHNVJYJU-DQIao4rH.js +0 -1
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
# Strikethroo workspace configuration.
|
|
2
2
|
#
|
|
3
|
-
# This is
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
# Customize section in the web app (`npx strikethroo serve`)
|
|
7
|
-
#
|
|
3
|
+
# This file is local to this workspace and ignored by the workspace .gitignore.
|
|
4
|
+
# Harness permissions, installed models, and routing preferences can differ by
|
|
5
|
+
# developer and machine. Edit it directly or through the Config tab of the
|
|
6
|
+
# Customize section in the web app (`npx strikethroo serve`). Saving from the
|
|
7
|
+
# web UI rewrites this file and does not preserve comments.
|
|
8
8
|
#
|
|
9
9
|
# Sections:
|
|
10
|
+
# harnesses — exact ordered argv elements added when Strikethroo invokes the
|
|
11
|
+
# named external CLI. The local user owns the resulting permissions. Values
|
|
12
|
+
# are never split or shell-expanded. Keep secrets and machine paths out of
|
|
13
|
+
# argv; use each harness's authentication and user configuration instead.
|
|
10
14
|
# execution_routing — automatic per-task execution routing. Profiles are
|
|
11
15
|
# arbitrary, project-defined routing categories;
|
|
12
16
|
# each `description` tells the task-generation LLM when the profile
|
|
@@ -23,5 +27,90 @@
|
|
|
23
27
|
# contract and an illustrative example:
|
|
24
28
|
# https://strikethroo.canpicasoft.com/customization.html
|
|
25
29
|
|
|
30
|
+
harnesses:
|
|
31
|
+
claude:
|
|
32
|
+
cli_args:
|
|
33
|
+
- --dangerously-skip-permissions
|
|
34
|
+
codex:
|
|
35
|
+
cli_args:
|
|
36
|
+
- --sandbox
|
|
37
|
+
- workspace-write
|
|
38
|
+
cursor:
|
|
39
|
+
cli_args:
|
|
40
|
+
- --force
|
|
41
|
+
gemini:
|
|
42
|
+
cli_args:
|
|
43
|
+
- --approval-mode
|
|
44
|
+
- yolo
|
|
45
|
+
copilot:
|
|
46
|
+
cli_args:
|
|
47
|
+
- --allow-all
|
|
48
|
+
opencode:
|
|
49
|
+
cli_args:
|
|
50
|
+
- --auto
|
|
51
|
+
|
|
26
52
|
execution_routing:
|
|
27
|
-
profiles:
|
|
53
|
+
profiles:
|
|
54
|
+
docs-and-config:
|
|
55
|
+
description: >-
|
|
56
|
+
Prose, documentation, and declarative configuration edits with no
|
|
57
|
+
intricate control flow: Markdown authoring, README and docs-site
|
|
58
|
+
updates, technical writing, skill-prompt copy, and YAML/JSON config
|
|
59
|
+
changes. Typical skills: markdown, technical-writing, documentation,
|
|
60
|
+
yaml, json, jekyll, markdown-authoring. Complexity score roughly 3-4.
|
|
61
|
+
Choose this only when the task requires no cross-module code reasoning.
|
|
62
|
+
models:
|
|
63
|
+
- model: sonnet
|
|
64
|
+
harness: claude
|
|
65
|
+
reasoning_effort: medium
|
|
66
|
+
- model: gpt-5.6-sol
|
|
67
|
+
harness: codex
|
|
68
|
+
reasoning_effort: low
|
|
69
|
+
- model: opencode-go/minimax-m3
|
|
70
|
+
harness: opencode
|
|
71
|
+
- model: composer-2.5
|
|
72
|
+
harness: cursor
|
|
73
|
+
standard-implementation:
|
|
74
|
+
description: >-
|
|
75
|
+
Everyday feature and bug-fix work scoped to a handful of files with
|
|
76
|
+
clear acceptance criteria: TypeScript/Node CLI logic, React components
|
|
77
|
+
and Tailwind/CSS styling, Bash scripts, and their unit/e2e tests
|
|
78
|
+
(Vitest, Jest, Playwright). Typical skills: typescript, react,
|
|
79
|
+
react-components, css, tailwindcss, bash, nodejs, vitest, jest,
|
|
80
|
+
playwright, testing. Complexity score roughly 4-6. This is the default
|
|
81
|
+
profile when a task fits neither docs-and-config nor
|
|
82
|
+
complex-architecture.
|
|
83
|
+
models:
|
|
84
|
+
- model: opus
|
|
85
|
+
harness: claude
|
|
86
|
+
reasoning_effort: medium
|
|
87
|
+
- model: gpt-5.6-sol
|
|
88
|
+
harness: codex
|
|
89
|
+
reasoning_effort: medium
|
|
90
|
+
- model: opencode-go/kimi-k2.7-code
|
|
91
|
+
harness: opencode
|
|
92
|
+
- model: composer-2.5
|
|
93
|
+
harness: cursor
|
|
94
|
+
complex-architecture:
|
|
95
|
+
description: >-
|
|
96
|
+
High-difficulty, cross-cutting, or design-heavy work: data-model and
|
|
97
|
+
type-system design, non-trivial refactors, build-tooling and bundler
|
|
98
|
+
changes (esbuild, Vite), server/HTTP/SSE and API design, runtime prompt
|
|
99
|
+
composition, MCP/protocol work, and any task whose blast radius spans
|
|
100
|
+
multiple subsystems or carries subtle correctness constraints. Typical
|
|
101
|
+
skills: data-modeling, typescript-refactoring, refactoring,
|
|
102
|
+
build-tooling, esbuild, vite, node-http, server-sent-events,
|
|
103
|
+
mcp-protocol, secure-coding, html-sanitization. Complexity score roughly
|
|
104
|
+
6-7, or any task with wide blast radius regardless of score.
|
|
105
|
+
models:
|
|
106
|
+
- model: opus
|
|
107
|
+
harness: claude
|
|
108
|
+
reasoning_effort: xhigh
|
|
109
|
+
- model: gpt-5.6-sol
|
|
110
|
+
harness: codex
|
|
111
|
+
reasoning_effort: high
|
|
112
|
+
- model: opencode-go/glm-5.2
|
|
113
|
+
harness: opencode
|
|
114
|
+
reasoning_effort: max
|
|
115
|
+
- model: composer-2.5
|
|
116
|
+
harness: cursor
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
## Automated Code Review Gate
|
|
4
4
|
|
|
5
|
-
This hook governs
|
|
5
|
+
This hook governs a review step that runs at the end of blueprint execution, after the mechanical gates (lint, tests, Self Validation) report success. A reviewer on a discovered external harness critiques the plan's cumulative diff and emits findings. The findings are validated against the vendored schema and recorded.
|
|
6
6
|
|
|
7
|
-
The gate
|
|
7
|
+
The gate reports; it does not decide. Nothing is applied automatically, and the implementer reads the recorded findings and chooses what to act on.
|
|
8
8
|
|
|
9
9
|
## Mandate: Conformance and Defects Only
|
|
10
10
|
|
|
11
|
-
The reviewer checks the diff against the **plan's stated requirements** and for **demonstrable defects**. It does **not** raise general code-quality opinions, style notes, design critiques, or taste judgments
|
|
11
|
+
The reviewer checks the diff against the **plan's stated requirements** and for **demonstrable defects**. It does **not** raise general code-quality opinions, style notes, design critiques, or taste judgments. The linter owns style. Every finding must cite concrete evidence and trace to:
|
|
12
12
|
|
|
13
13
|
- An explicit requirement stated in the plan, **or**
|
|
14
14
|
- A demonstrable defect in the code as written
|
|
@@ -17,41 +17,31 @@ Anything else is out of scope and must not be included in findings.
|
|
|
17
17
|
|
|
18
18
|
## Finding Categories In Scope
|
|
19
19
|
|
|
20
|
-
- **Requirement conformance
|
|
21
|
-
- **Demonstrable defects
|
|
20
|
+
- **Requirement conformance**: the code does not implement what the plan explicitly asked for
|
|
21
|
+
- **Demonstrable defects**: the code fails at runtime, produces wrong behaviour, violates a contract it declares, has a security hole, causes data loss, or breaks something else in the plan
|
|
22
22
|
|
|
23
|
-
## Severity
|
|
23
|
+
## Severity and Confidence
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
Both are advisory triage labels carried on every finding so that whoever reads the review can sort it. Nothing thresholds on them and nothing is filtered out before the implementer sees it.
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
- `major` — produces wrong behaviour or breaks a documented contract; nothing destroyed
|
|
29
|
-
- `minor` — real but bounded (mishandled edge case, missing test, maintenance hazard); behaviour correct today
|
|
30
|
-
- `info` — no defect (style, naming, question for author, recorded context)
|
|
27
|
+
Severity, from most to least consequential:
|
|
31
28
|
|
|
32
|
-
|
|
29
|
+
- `critical`: causes data loss, a security hole, a crash, or corruption on a path real usage reaches
|
|
30
|
+
- `major`: produces wrong behaviour or breaks a documented contract; nothing destroyed
|
|
31
|
+
- `minor`: real but bounded (mishandled edge case, maintenance hazard); behaviour correct today
|
|
32
|
+
- `info`: no defect (recorded context, a question for the author)
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
Confidence, from most to least sure:
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
- `high`: the evidence is in the code that was read, and the failure traces from the diff alone
|
|
37
|
+
- `medium`: likely real, but rests on one assumption that was not verified (how a caller behaves, what a dependency guarantees, what a requirement was)
|
|
38
|
+
- `low`: speculative (failure scenario imagined rather than traced, constraint invented, intent could not be inferred)
|
|
37
39
|
|
|
38
|
-
|
|
39
|
-
- `medium` — likely real, but rests on one assumption not verified (how a caller behaves, what a dependency guarantees, what a requirement was)
|
|
40
|
-
- `low` — speculative (failure scenario imagined, not traced; constraint invented; intent could not be inferred)
|
|
40
|
+
Confidence matters most when it is low. LLM reviewers overstate certainty, so a reviewer that marks its own guess as `medium` is doing the reader a service. Record the label honestly rather than upgrading it to be taken seriously.
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
## What the Gate Guarantees
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
## Round Budget: 3
|
|
47
|
-
|
|
48
|
-
The gate runs up to three detect-and-fix cycles:
|
|
49
|
-
|
|
50
|
-
1. Reviewer critiques the cumulative diff → findings
|
|
51
|
-
2. If findings above floor exist: implement fixes, re-run mechanical gates, verify
|
|
52
|
-
3. Reviewer re-checks → repeat until no new findings above floor or budget exhausted
|
|
53
|
-
|
|
54
|
-
This value expressed here is advisory prose only. **Termination is enforced in code and cannot be bypassed by editing this file.** If the round budget is exhausted, the gate halts exactly as any mechanical gate failure does: the plan stays in `plans/`, findings are recorded, and the failure is documented.
|
|
44
|
+
Exactly one thing, and it is enforced in code rather than here: a review that could not be certified is never reported as a clean one. A findings document that is absent, invalid against the schema, or unvalidatable because `xmllint` is missing halts the gate and says which of those happened. "The reviewer found nothing" and "the reviewer never ran" are never collapsed into each other.
|
|
55
45
|
|
|
56
46
|
## Disable the Gate
|
|
57
47
|
|
|
@@ -1,18 +1,21 @@
|
|
|
1
|
+
# Local workspace configuration.
|
|
2
|
+
#
|
|
3
|
+
# Harness permissions, model routing, and resolver settings depend on the
|
|
4
|
+
# developer's machine. Init still creates and hash-tracks this file so re-runs
|
|
5
|
+
# can preserve local edits and report template conflicts.
|
|
6
|
+
config/config.yaml
|
|
7
|
+
|
|
1
8
|
# Code review gate artifacts.
|
|
2
9
|
#
|
|
3
|
-
# The review gate writes a recorded base commit and
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
# execution: the base commit is live only from capture through the final round,
|
|
7
|
-
# and each round supersedes the last.
|
|
10
|
+
# The report-only review gate writes a recorded base commit and review.xml into
|
|
11
|
+
# the plan it is reviewing. A failed review may also leave reviewer-output.txt
|
|
12
|
+
# for diagnosis. These files are machine-generated output for one execution.
|
|
8
13
|
#
|
|
9
14
|
# Ignoring it also keeps the gate from reviewing itself. The reviewed diff runs
|
|
10
15
|
# from the recorded base against the working tree, and untracked files are in
|
|
11
|
-
# scope
|
|
12
|
-
# output out
|
|
13
|
-
#
|
|
14
|
-
# them, so a round-1 review.xml is invisible to round 2 whether or not anything
|
|
15
|
-
# committed it.
|
|
16
|
+
# scope. The gate synthesizes an add-diff for each one. These rules keep its own
|
|
17
|
+
# output out because the gate enumerates untracked paths with
|
|
18
|
+
# `git ls-files --others --exclude-standard`.
|
|
16
19
|
#
|
|
17
20
|
# Both locations are listed because a completed plan directory is moved from
|
|
18
21
|
# plans/ to archive/ wholesale, carrying its review/ directory with it.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{U as a,C as n}from"./mermaid.core-CxfmFJso.js";const t=(r,o)=>a.lang.round(n.parse(r)[o]);export{t as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,a as s,c as e,C as t}from"./chunk-727SXJPM-BZxIJIkN.js";import{b as i}from"./mermaid.core-CxfmFJso.js";import"./chunk-FMBD7UC4-BkIlqLqc.js";import"./chunk-ND2GUHAM-BZAfIvWk.js";import"./chunk-55IACEB6-BYY5vsbu.js";import"./chunk-2J33WTMH-3QS28848.js";import"./index-B5AkN942.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,a as s,c as e,C as t}from"./chunk-727SXJPM-BZxIJIkN.js";import{b as i}from"./mermaid.core-CxfmFJso.js";import"./chunk-FMBD7UC4-BkIlqLqc.js";import"./chunk-ND2GUHAM-BZAfIvWk.js";import"./chunk-55IACEB6-BYY5vsbu.js";import"./chunk-2J33WTMH-3QS28848.js";import"./index-B5AkN942.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as e,a as r,s as a,S as s}from"./chunk-AQP2D5EJ-Dwpt8x10.js";import{b as i}from"./mermaid.core-CxfmFJso.js";import"./chunk-55IACEB6-BYY5vsbu.js";import"./chunk-2J33WTMH-3QS28848.js";import"./index-B5AkN942.js";var u={parser:a,get db(){return new s(2)},renderer:r,styles:e,init:i(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")};export{u as diagram};
|