@zenuml/core 3.47.9 → 3.48.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.
Files changed (204) hide show
  1. package/dist/cloud-icons-eHuugVSv.js.map +1 -0
  2. package/dist/zenuml.esm.mjs +2153 -2156
  3. package/dist/zenuml.esm.mjs.map +1 -0
  4. package/dist/zenuml.js +82 -82
  5. package/dist/zenuml.js.map +1 -0
  6. package/package.json +11 -1
  7. package/src/cli/zenuml.ts +1164 -0
  8. package/.agents/skills/babysit-pr/SKILL.md +0 -223
  9. package/.agents/skills/babysit-pr/agents/openai.yaml +0 -7
  10. package/.agents/skills/dia-scoring/SKILL.md +0 -139
  11. package/.agents/skills/dia-scoring/agents/openai.yaml +0 -7
  12. package/.agents/skills/dia-scoring/references/selectors-and-keys.md +0 -253
  13. package/.agents/skills/land-pr/SKILL.md +0 -120
  14. package/.agents/skills/propagate-core-release/SKILL.md +0 -205
  15. package/.agents/skills/propagate-core-release/agents/openai.yaml +0 -7
  16. package/.agents/skills/propagate-core-release/references/downstreams.md +0 -42
  17. package/.agents/skills/ship-branch/SKILL.md +0 -105
  18. package/.agents/skills/submit-branch/SKILL.md +0 -76
  19. package/.agents/skills/validate-branch/SKILL.md +0 -72
  20. package/.claude/commands/README.md +0 -162
  21. package/.claude/commands/analyze.md +0 -101
  22. package/.claude/commands/clarify.md +0 -158
  23. package/.claude/commands/code-review.md +0 -322
  24. package/.claude/commands/constitution.md +0 -73
  25. package/.claude/commands/create-docs.md +0 -309
  26. package/.claude/commands/full-context.md +0 -121
  27. package/.claude/commands/gemini-consult.md +0 -164
  28. package/.claude/commands/handoff.md +0 -146
  29. package/.claude/commands/implement.md +0 -56
  30. package/.claude/commands/plan.md +0 -43
  31. package/.claude/commands/refactor.md +0 -188
  32. package/.claude/commands/specify.md +0 -21
  33. package/.claude/commands/tasks.md +0 -62
  34. package/.claude/commands/update-docs.md +0 -314
  35. package/.claude/hooks/README.md +0 -270
  36. package/.claude/hooks/config/sensitive-patterns.json +0 -86
  37. package/.claude/hooks/gemini-context-injector.sh +0 -129
  38. package/.claude/hooks/mcp-security-scan.sh +0 -147
  39. package/.claude/hooks/notify.sh +0 -103
  40. package/.claude/hooks/setup/hook-setup.md +0 -96
  41. package/.claude/hooks/setup/settings.json.template +0 -63
  42. package/.claude/hooks/sounds/complete.wav +0 -0
  43. package/.claude/hooks/sounds/input-needed.wav +0 -0
  44. package/.claude/hooks/subagent-context-injector.sh +0 -65
  45. package/.claude/skills/babysit-pr/SKILL.md +0 -223
  46. package/.claude/skills/babysit-pr/agents/openai.yaml +0 -7
  47. package/.claude/skills/dia-scoring/SKILL.md +0 -139
  48. package/.claude/skills/dia-scoring/agents/openai.yaml +0 -7
  49. package/.claude/skills/dia-scoring/references/selectors-and-keys.md +0 -253
  50. package/.claude/skills/emoji-eval/SKILL.md +0 -187
  51. package/.claude/skills/land-pr/SKILL.md +0 -120
  52. package/.claude/skills/propagate-core-release/SKILL.md +0 -205
  53. package/.claude/skills/propagate-core-release/agents/openai.yaml +0 -7
  54. package/.claude/skills/propagate-core-release/references/downstreams.md +0 -42
  55. package/.claude/skills/ship-branch/SKILL.md +0 -105
  56. package/.claude/skills/submit-branch/SKILL.md +0 -76
  57. package/.claude/skills/validate-branch/SKILL.md +0 -72
  58. package/.claude/skills/zenuml-ux-research/SKILL.md +0 -183
  59. package/.claude/skills/zenuml-ux-research/references/assertion-catalog.md +0 -261
  60. package/.claude/skills/zenuml-ux-research/references/best-practices-overview.md +0 -56
  61. package/.claude/skills/zenuml-ux-research/references/report-template.md +0 -89
  62. package/.claude/skills/zenuml-ux-research/references/scenarios/edit-message-label.md +0 -37
  63. package/.claude/skills/zenuml-ux-research/references/scenarios/insert-message.md +0 -36
  64. package/.claude/skills/zenuml-ux-research/references/scenarios/insert-participant.md +0 -31
  65. package/.claude/skills/zenuml-ux-research/references/scenarios/rename-participant.md +0 -33
  66. package/.claude/skills/zenuml-ux-research/references/scenarios/undo-insert.md +0 -35
  67. package/.devcontainer/devcontainer.json +0 -21
  68. package/.dockerignore +0 -19
  69. package/.eslintrc.js +0 -39
  70. package/.git-blame-ignore-revs +0 -6
  71. package/.kiro/hooks/README.md +0 -38
  72. package/.kiro/hooks/session-sound-notification.js +0 -44
  73. package/.kiro/hooks/session-sound-notification.json +0 -23
  74. package/.mcp.json.example +0 -17
  75. package/.nvmrc +0 -1
  76. package/.prettierignore +0 -4
  77. package/.prettierrc +0 -1
  78. package/.specify/memory/constitution.md +0 -33
  79. package/.specify/scripts/bash/check-prerequisites.sh +0 -166
  80. package/.specify/scripts/bash/common.sh +0 -113
  81. package/.specify/scripts/bash/create-new-feature.sh +0 -97
  82. package/.specify/scripts/bash/setup-plan.sh +0 -60
  83. package/.specify/scripts/bash/update-agent-context.sh +0 -728
  84. package/.specify/templates/agent-file-template.md +0 -23
  85. package/.specify/templates/plan-template.md +0 -219
  86. package/.specify/templates/spec-template.md +0 -116
  87. package/.specify/templates/tasks-template.md +0 -127
  88. package/.storybook/main.ts +0 -25
  89. package/.storybook/preview.ts +0 -29
  90. package/.watchmanconfig +0 -3
  91. package/AGENTS.md +0 -26
  92. package/CLAUDE.md +0 -124
  93. package/DEPLOYMENT.md +0 -62
  94. package/Dockerfile +0 -36
  95. package/IMPLEMENTATION_PLAN.md +0 -163
  96. package/Integration/vanilla-js/index.html +0 -42
  97. package/MCP-ASSISTANT-RULES.md +0 -85
  98. package/README_CN.md +0 -15
  99. package/TUTORIAL.md +0 -116
  100. package/antlr/antlr-4.11.1-complete.jar +0 -0
  101. package/bun.lock +0 -1544
  102. package/bunfig.toml +0 -52
  103. package/docs/UNICODE_SUPPORT.md +0 -179
  104. package/docs/ai-context/deployment-infrastructure.md +0 -21
  105. package/docs/ai-context/docs-overview.md +0 -89
  106. package/docs/ai-context/handoff.md +0 -174
  107. package/docs/ai-context/project-structure.md +0 -160
  108. package/docs/ai-context/system-integration.md +0 -21
  109. package/docs/asciidoc/contributor.adoc +0 -54
  110. package/docs/asciidoc/create-my-own-theme.adoc +0 -149
  111. package/docs/asciidoc/images/creation-component.png +0 -0
  112. package/docs/asciidoc/images/creation-rtl.png +0 -0
  113. package/docs/asciidoc/images/message-arrow-rtl.png +0 -0
  114. package/docs/asciidoc/images/occurrence.png +0 -0
  115. package/docs/asciidoc/images/return-message-conflict.png +0 -0
  116. package/docs/asciidoc/images/shift-up-half-the-height.png +0 -0
  117. package/docs/asciidoc/images/three-layer-info-arch.png +0 -0
  118. package/docs/asciidoc/images/vertical-alignment.svg +0 -1
  119. package/docs/asciidoc/images/vertically-aligning.png +0 -0
  120. package/docs/asciidoc/index.adoc +0 -277
  121. package/docs/asciidoc/theme-debug-web-app.png +0 -0
  122. package/docs/asciidoc/tutorial.adoc +0 -22
  123. package/docs/asciidoc/user-css.png +0 -0
  124. package/docs/async-vs-sync-parser-rules.md +0 -81
  125. package/docs/divider-parser-allow-spaces.md +0 -38
  126. package/docs/highlighting-messages.md +0 -52
  127. package/docs/images/editor-sample.png +0 -0
  128. package/docs/inherited-vs-provided-from.md +0 -64
  129. package/docs/parser/Assignment.md +0 -8
  130. package/docs/parser/PARSER_IMPROVEMENTS_CC.md +0 -425
  131. package/docs/parser/grammar_review_gemini.md +0 -116
  132. package/docs/participants-function.md +0 -25
  133. package/docs/responsive-participant-margin.md +0 -52
  134. package/docs/starter.md +0 -9
  135. package/docs/superpowers/plans/2026-03-27-e2e-test-reorg.md +0 -698
  136. package/docs/superpowers/plans/2026-03-30-emoji-support.md +0 -1220
  137. package/docs/superpowers/plans/2026-03-30-self-correcting-scoring.md +0 -206
  138. package/docs/superpowers/plans/2026-04-15-keyboard-editing-on-diagram.md +0 -1992
  139. package/docs/superpowers/plans/2026-04-15-zenuml-ux-research-skill.md +0 -1452
  140. package/docs/ux-research/.gitkeep +0 -0
  141. package/docs/ux-research/2026-04-15-rename-participant.md +0 -156
  142. package/docs/ux-research/2026-04-18-insert-participant.md +0 -151
  143. package/docs/width-translate-and-offsets.md +0 -62
  144. package/docs/xss.md +0 -59
  145. package/e2e/data/compare-cases.js +0 -1090
  146. package/e2e/data/diff-algorithm.js +0 -199
  147. package/e2e/fixtures/create-message.html +0 -26
  148. package/e2e/fixtures/editable-label.html +0 -35
  149. package/e2e/fixtures/editable-span.html +0 -122
  150. package/e2e/fixtures/empty-diagram.html +0 -23
  151. package/e2e/fixtures/fixture.html +0 -31
  152. package/e2e/fixtures/insert-participant.html +0 -23
  153. package/e2e/fixtures/reorder-cross-fragment.html +0 -31
  154. package/e2e/fixtures/reorder-fragment.html +0 -29
  155. package/e2e/fixtures/reorder-message.html +0 -27
  156. package/e2e/fixtures/svg-test.html +0 -21
  157. package/e2e/fixtures/type-switch.html +0 -29
  158. package/e2e/tools/canonical-history.html +0 -908
  159. package/e2e/tools/compare-case.html +0 -371
  160. package/e2e/tools/compare.html +0 -35
  161. package/e2e/tools/native-diff-ext/background.js +0 -60
  162. package/e2e/tools/native-diff-ext/bridge.js +0 -26
  163. package/e2e/tools/native-diff-ext/content.js +0 -194
  164. package/e2e/tools/svg-preview.html +0 -56
  165. package/embed.html +0 -193
  166. package/eslint.config.mjs +0 -35
  167. package/firebase-debug.log +0 -108
  168. package/iframe-container-demo/diagram.html +0 -124
  169. package/iframe-container-demo/host.html +0 -817
  170. package/index.html +0 -771
  171. package/mermaid-zenuml-async-spa-auth.png +0 -0
  172. package/mermaid-zenuml-async-spa-auth.snapshot.md +0 -96
  173. package/newsletter/unicode-support-announcement.md +0 -134
  174. package/playground/creation.html +0 -53
  175. package/playground/message.html +0 -63
  176. package/playwright.config.ts +0 -40
  177. package/renderer.html +0 -366
  178. package/scripts/analyze-compare-case/collect-data.mjs +0 -1134
  179. package/scripts/analyze-compare-case/config.mjs +0 -102
  180. package/scripts/analyze-compare-case/geometry.mjs +0 -101
  181. package/scripts/analyze-compare-case/native-diff.mjs +0 -224
  182. package/scripts/analyze-compare-case/output.mjs +0 -74
  183. package/scripts/analyze-compare-case/panel-diff.mjs +0 -114
  184. package/scripts/analyze-compare-case/report.mjs +0 -162
  185. package/scripts/analyze-compare-case/residual-scopes.mjs +0 -347
  186. package/scripts/analyze-compare-case/scoring.mjs +0 -829
  187. package/scripts/analyze-compare-case.mjs +0 -149
  188. package/scripts/bump-version.js +0 -117
  189. package/scripts/snapshot-dual.js +0 -173
  190. package/scripts/update-snapshots.js +0 -70
  191. package/skills/dia-scoring/SKILL.md +0 -129
  192. package/skills/dia-scoring/agents/openai.yaml +0 -7
  193. package/skills/dia-scoring/references/selectors-and-keys.md +0 -253
  194. package/tailwind.config.js +0 -126
  195. package/test-compression.html +0 -274
  196. package/test-mermaid-zenuml.html +0 -57
  197. package/test-setup.ts +0 -124
  198. package/test-url-params.html +0 -192
  199. package/tsconfig.app.json +0 -31
  200. package/tsconfig.node.json +0 -24
  201. package/tsconfig.test.json +0 -9
  202. package/vite.config.lib.ts +0 -93
  203. package/vite.config.ts +0 -84
  204. package/wrangler.toml +0 -18
@@ -1,89 +0,0 @@
1
- ---
2
- scenario_id: {{scenario_id}}
3
- scenario_title: {{scenario_title}}
4
- run_date: {{run_date}}
5
- zenuml_core_sha: {{zenuml_core_sha}}
6
- audited_url: {{audited_url}}
7
- skill_version: 0.1.0
8
- gap_count: { high: {{gap_count_high}}, med: {{gap_count_med}}, low: {{gap_count_low}} }
9
- ---
10
-
11
- # UX Research — {{scenario_title}}
12
-
13
- ## Executive summary
14
-
15
- {{executive_summary}}
16
-
17
- ## Scenario recap
18
-
19
- **User intent:** {{user_intent}}
20
-
21
- **Starting DSL:**
22
- ```
23
- {{starting_dsl}}
24
- ```
25
-
26
- **Target DSL:**
27
- ```
28
- {{target_dsl}}
29
- ```
30
-
31
- ## Observed walkthrough
32
-
33
- {{walkthrough_numbered_steps}}
34
-
35
- ## Gaps
36
-
37
- {{gap_blocks}}
38
-
39
- > Each gap block uses this structure:
40
- >
41
- > ```
42
- > ### Gap N — <short headline>
43
- > **Severity:** <low|med|high>
44
- > **Catalog ID:** <id or "novel — candidate for new rule">
45
- > **Observed:** <verbatim>
46
- > **Expected:** <from hypothesis>
47
- > **Exemplars:** <tools where expected behavior is seen>
48
- > **Rationale:** <why this matters>
49
- > **Suggested fix:** <grep result: file:line; or "no code path found">
50
- > ```
51
- >
52
- > (Blockquote is for documentation inside the template — the rendered report omits it.)
53
-
54
- ## Coverage
55
-
56
- Tested hypotheses (no gap found):
57
- {{coverage_tested}}
58
-
59
- Not tested (out of scope for this scenario):
60
- {{coverage_out_of_scope}}
61
-
62
- Skipped (couldn't form a testable hypothesis):
63
- {{coverage_skipped}}
64
-
65
- ## Best-practice sources
66
-
67
- **Bundled catalog IDs referenced:**
68
- {{bundled_sources}}
69
-
70
- **Web sources fetched during this run:**
71
- {{web_sources}}
72
-
73
- ## Playwright regression snippet
74
-
75
- Paste into `zenuml-core/tests/ux/{{scenario_id}}.spec.ts` once the gap is fixed. The skill emits this snippet; it does not run it.
76
-
77
- ```typescript
78
- {{playwright_snippet}}
79
- ```
80
-
81
- ---
82
-
83
- ## Zero-gap rendering
84
-
85
- If the scenario produced zero gaps, render the report omitting the **Gaps** and **Playwright regression snippet** sections. The **Observed walkthrough** section becomes a single line:
86
-
87
- > No gaps observed on zenuml-core @ {{zenuml_core_sha}}.
88
-
89
- All other sections (metadata, executive summary, scenario recap, coverage, best-practice sources) still render.
@@ -1,37 +0,0 @@
1
- ---
2
- id: edit-message-label
3
- title: Edit an existing message label
4
- ---
5
-
6
- ## User intent
7
- The user has a message `A->B: hello` on the canvas and wants to change the label to `hi`.
8
-
9
- ## Starting DSL
10
- ```
11
- A
12
- B
13
- A->B: hello
14
- ```
15
-
16
- ## Target DSL
17
- ```
18
- A
19
- B
20
- A->B: hi
21
- ```
22
-
23
- ## Relevant assertion categories
24
- EDT, KBD, SEL, FOC, UND
25
-
26
- ## Walkthrough hints (not prescriptive)
27
- - This scenario exercises the inline-edit contract on an existing piece of DSL, not a new one.
28
- - Candidate paths to try in order:
29
- 1. Click the message label `hello` once to select, press Enter, retype.
30
- 2. Double-click the message label.
31
- 3. Keyboard: navigate to the message via arrows, press Enter.
32
- 4. Fall back to editing the DSL editor directly.
33
- - Watch specifically for: undo granularity when the user types `hi` then changes their mind (one undo should revert the whole label, not one character at a time).
34
-
35
- ## Known issues to watch for (optional)
36
- - If undo is character-level during a label edit, that is a UND-02 violation.
37
- - If clicking the message selects the wrong thing (e.g., the arrow instead of the label), that is a SEL-01 violation.
@@ -1,36 +0,0 @@
1
- ---
2
- id: insert-message
3
- title: Insert a synchronous message between two participants
4
- ---
5
-
6
- ## User intent
7
- The user has two participants `A` and `B` on the canvas and wants to add a synchronous message from `A` to `B` with the label `hello`.
8
-
9
- ## Starting DSL
10
- ```
11
- A
12
- B
13
- ```
14
-
15
- ## Target DSL
16
- ```
17
- A
18
- B
19
- A->B: hello
20
- ```
21
-
22
- ## Relevant assertion categories
23
- INS, KBD, EDT, FOC, FBK
24
-
25
- ## Walkthrough hints (not prescriptive)
26
- - This is the most common creation action in any sequence diagramming tool; it is the load-bearing scenario for canvas-first editing of ZenUML.
27
- - Candidate paths to try in order:
28
- 1. Click `A`, look for a "send message" affordance or toolbar button, draw/click toward `B`.
29
- 2. Hover between `A` and `B` in the lifeline area for an inline "+" affordance.
30
- 3. Keyboard: Tab into widget, select `A`, press a hotkey for "new message".
31
- 4. Fall back to typing `A->B: hello` into the DSL editor.
32
- - Watch specifically for: whether a canvas-first path exists at all, whether message creation automatically enters label edit mode on the new message, whether Escape during message creation cancels cleanly.
33
-
34
- ## Known issues to watch for (optional)
35
- - If the canvas has no message-creation affordance at all, that is an INS-01 violation at high severity.
36
- - If the new message is not in edit mode immediately on creation, that is an EDT-03 / FOC-01 violation.
@@ -1,31 +0,0 @@
1
- ---
2
- id: insert-participant
3
- title: Insert a participant on a blank diagram
4
- ---
5
-
6
- ## User intent
7
- The user opens ZenUML to a blank diagram and wants to add one participant named `Alice` so they can start modelling.
8
-
9
- ## Starting DSL
10
- ```
11
- ```
12
-
13
- ## Target DSL
14
- ```
15
- Alice
16
- ```
17
-
18
- ## Relevant assertion categories
19
- INS, FOC, EDT, KBD
20
-
21
- ## Walkthrough hints (not prescriptive)
22
- - Blank canvas is the highest-stakes discoverability test — the skill should record how long it takes to find the insertion affordance.
23
- - Candidate insertion paths to try in order:
24
- 1. Click on the canvas background.
25
- 2. Look for a visible "+" or "Add participant" affordance.
26
- 3. Keyboard: try pressing Enter or `p` on an empty canvas.
27
- 4. Fall back to typing directly into the DSL editor pane.
28
- - The moment the user successfully names the new participant `Alice` is the scenario's end state.
29
-
30
- ## Known issues to watch for (optional)
31
- - If the only path is direct DSL editing, that itself is a finding (violates INS-01).
@@ -1,33 +0,0 @@
1
- ---
2
- id: rename-participant
3
- title: Rename a participant via keyboard
4
- ---
5
-
6
- ## User intent
7
- The user has a participant `A` on the canvas and wants to rename it to `Alice` without leaving the keyboard.
8
-
9
- ## Starting DSL
10
- ```
11
- A
12
- ```
13
-
14
- ## Target DSL
15
- ```
16
- Alice
17
- ```
18
-
19
- ## Relevant assertion categories
20
- KBD, EDT, SEL, FOC
21
-
22
- ## Walkthrough hints (not prescriptive)
23
- - This scenario is the canonical test of KBD-03 (Enter enters edit mode) and EDT-02 (caret at end of text).
24
- - Candidate paths to try in order:
25
- 1. Tab into the diagram widget, arrow-key to select `A`, press Enter, type `lice`, press Enter.
26
- 2. Click `A` to select, press Enter, retype.
27
- 3. Double-click `A` to enter edit mode.
28
- 4. Fall back to editing the DSL editor directly.
29
- - Watch specifically for: whether Enter does anything on the selected participant; whether the caret is placed at the end or the whole label is pre-selected; whether Escape cancels cleanly.
30
-
31
- ## Known issues to watch for (optional)
32
- - If Enter does nothing on a selected participant, that is a KBD-03 violation at high severity.
33
- - If only mouse double-click works, that is a KBD-only violation (no mouse-free path).
@@ -1,35 +0,0 @@
1
- ---
2
- id: undo-insert
3
- title: Undo a just-inserted message
4
- ---
5
-
6
- ## User intent
7
- The user has two participants `A` and `B`, inserts a message `A->B: hello`, then immediately presses Ctrl/Cmd+Z to undo. The expected result is that the message is removed and the state is back to just the two participants.
8
-
9
- ## Starting DSL
10
- ```
11
- A
12
- B
13
- ```
14
-
15
- ## Target DSL
16
- ```
17
- A
18
- B
19
- ```
20
- (after: insert `A->B: hello`, then undo)
21
-
22
- ## Relevant assertion categories
23
- UND, FOC, SEL, KBD
24
-
25
- ## Walkthrough hints (not prescriptive)
26
- - This scenario exercises the full insertion-then-undo round trip.
27
- - Steps:
28
- 1. Follow the `insert-message` scenario's walkthrough to get to the post-insert state.
29
- 2. Press Ctrl+Z (or Cmd+Z on macOS).
30
- 3. Observe: is the message removed? Is the DSL editor reverted? Is selection/focus restored to whatever it was before the insert?
31
- - Watch specifically for: undo granularity (one Ctrl+Z should undo the whole insert, not the individual keystrokes of the label edit) and focus restoration (FOC-03).
32
-
33
- ## Known issues to watch for (optional)
34
- - If the undo leaves the label partially typed, UND-02 is violated.
35
- - If focus ends up on the document body after undo, FOC-03 is violated.
@@ -1,21 +0,0 @@
1
- {
2
- "name": "Node.js & Browser Tools",
3
- "image": "mcr.microsoft.com/devcontainers/typescript-node:20",
4
- "features": {
5
- "ghcr.io/devcontainers/features/node:2": {
6
- "version": "none"
7
- }
8
- },
9
- "forwardPorts": [9323],
10
- "customizations": {
11
- "vscode": {
12
- "extensions": [
13
- "dbaeumer.vscode-eslint",
14
- "esbenp.prettier-vscode"
15
- ]
16
- }
17
- },
18
- // Add your source code to the container
19
- "postCreateCommand": "pnpm install",
20
- "remoteUser": "node"
21
- }
package/.dockerignore DELETED
@@ -1,19 +0,0 @@
1
- node_modules
2
- .git
3
- .gitignore
4
- .github
5
- *.md
6
- dist
7
- .watchmanconfig
8
- .prettierrc
9
- .prettierignore
10
- .editorconfig
11
- .eslintignore
12
- .eslintrc.js
13
- .git-blame-ignore-revs
14
- .vscode
15
- cypress
16
- cypress.config.ts
17
- docs
18
- test
19
- vite.config.lib.js
package/.eslintrc.js DELETED
@@ -1,39 +0,0 @@
1
- module.exports = {
2
- env: {
3
- browser: true,
4
- es2021: true,
5
- node: true,
6
- jest: true,
7
- },
8
- extends: [
9
- "eslint:recommended",
10
- "plugin:@typescript-eslint/recommended",
11
- "plugin:prettier/recommended",
12
- ],
13
- globals: {
14
- CodeMirror: "readonly",
15
- },
16
- overrides: [
17
- {
18
- env: {
19
- node: true,
20
- },
21
- files: [".eslintrc.{js,cjs}"],
22
- parserOptions: {
23
- sourceType: "script",
24
- },
25
- },
26
- ],
27
- parserOptions: {
28
- ecmaVersion: "latest",
29
- parser: "@typescript-eslint/parser",
30
- sourceType: "module",
31
- },
32
- plugins: ["@typescript-eslint", "html"],
33
- rules: {
34
- "@typescript-eslint/ban-ts-comment": "off",
35
- "@typescript-eslint/no-var-requires": "off",
36
- "@typescript-eslint/no-explicit-any": "off",
37
- "@typescript-eslint/no-this-alias": "off",
38
- },
39
- };
@@ -1,6 +0,0 @@
1
- # This file is used to configure to ignore the given commit sha in git blame
2
- # To apply this file, run the following command:
3
- # git config blame.ignorerevsfile .git-blame-ignore-revs
4
-
5
- # This commit formatted the entire codebase
6
- 80987154e7740ddae2c7c0a04607bc25da51586e
@@ -1,38 +0,0 @@
1
- # Kiro Agent Hooks
2
-
3
- This directory contains custom hooks that automatically execute when specific events occur in Kiro.
4
-
5
- ## Session Sound Notification Hook
6
-
7
- **File:** `session-sound-notification.json` and `session-sound-notification.js`
8
-
9
- **Purpose:** Plays system sounds to notify you when:
10
-
11
- - An AI session completes
12
- - User input is required to continue
13
- - An error occurs
14
-
15
- **Sounds Used (macOS):**
16
-
17
- - **Session Complete:** Glass.aiff - A pleasant chime when tasks finish
18
- - **Input Required:** Sosumi.aiff - An attention-getting sound when you need to respond
19
- - **Error:** Basso.aiff - A distinctive sound for errors
20
- - **Default:** Ping.aiff - Fallback sound
21
-
22
- **Configuration:**
23
- The hook is enabled by default and will auto-execute. You can disable it by setting `"enabled": false` in the JSON configuration file.
24
-
25
- **Platform Notes:**
26
-
27
- - Currently optimized for macOS using the `afplay` command
28
- - Uses built-in system sounds located in `/System/Library/Sounds/`
29
- - For other platforms, the sound files and playback command would need to be adjusted
30
-
31
- ## Managing Hooks
32
-
33
- You can:
34
-
35
- 1. View current hooks in the Kiro Explorer under "Agent Hooks"
36
- 2. Use Command Palette → "Open Kiro Hook UI" to create new hooks
37
- 3. Edit hook files directly in this directory
38
- 4. Enable/disable hooks by modifying the `enabled` property
@@ -1,44 +0,0 @@
1
- /**
2
- * Session Sound Notification Hook
3
- * Plays a sound when sessions end or user input is required
4
- */
5
-
6
- const playSound = (soundType = 'default') => {
7
- // For macOS, we can use the 'afplay' command to play system sounds
8
- const sounds = {
9
- default: '/System/Library/Sounds/Ping.aiff',
10
- complete: '/System/Library/Sounds/Glass.aiff',
11
- attention: '/System/Library/Sounds/Sosumi.aiff',
12
- error: '/System/Library/Sounds/Basso.aiff'
13
- };
14
-
15
- const soundFile = sounds[soundType] || sounds.default;
16
-
17
- try {
18
- // Use afplay to play the sound on macOS
19
- require('child_process').exec(`afplay "${soundFile}"`, (error) => {
20
- if (error) {
21
- console.log('Could not play sound:', error.message);
22
- }
23
- });
24
- } catch (err) {
25
- console.log('Sound playback failed:', err.message);
26
- }
27
- };
28
-
29
- module.exports = {
30
- onSessionEnd: () => {
31
- console.log('🔊 Session completed - playing completion sound');
32
- playSound('complete');
33
- },
34
-
35
- onUserInputRequired: () => {
36
- console.log('🔊 User input needed - playing attention sound');
37
- playSound('attention');
38
- },
39
-
40
- onError: () => {
41
- console.log('🔊 Error occurred - playing error sound');
42
- playSound('error');
43
- }
44
- };
@@ -1,23 +0,0 @@
1
- {
2
- "name": "Session Sound Notification",
3
- "description": "Plays a sound when a session ends or user input is needed",
4
- "triggers": [
5
- {
6
- "event": "session.end",
7
- "description": "Triggered when an AI session completes"
8
- },
9
- {
10
- "event": "user.input.required",
11
- "description": "Triggered when the AI needs user input to continue"
12
- }
13
- ],
14
- "actions": [
15
- {
16
- "type": "system.sound",
17
- "sound": "notification",
18
- "description": "Play system notification sound"
19
- }
20
- ],
21
- "enabled": true,
22
- "autoExecute": true
23
- }
package/.mcp.json.example DELETED
@@ -1,17 +0,0 @@
1
- {
2
- "mcpServers": {
3
- "playwright": {
4
- "command": "npx",
5
- "args": ["@playwright/mcp@latest", "--extension"],
6
- "env": {
7
- "PLAYWRIGHT_MCP_EXTENSION_TOKEN": "<your-token-here>"
8
- }
9
- },
10
- "chrome-devtools": {
11
- "type": "stdio",
12
- "command": "npx",
13
- "args": ["-y", "chrome-devtools-mcp"],
14
- "env": {}
15
- }
16
- }
17
- }
package/.nvmrc DELETED
@@ -1 +0,0 @@
1
- 20
package/.prettierignore DELETED
@@ -1,4 +0,0 @@
1
- node_modules
2
- dist
3
- generated-parser
4
- pnpm-lcok.yaml
package/.prettierrc DELETED
@@ -1 +0,0 @@
1
- {}
@@ -1,33 +0,0 @@
1
- <!-- Sync Impact Report
2
- Version change: 1.0.0 → 1.1.0 (New principle added)
3
- Modified principles: None
4
- Added sections: II. Task Focus principle
5
- Removed sections: None
6
- Templates requiring updates: ✅ plan-template.md
7
- Follow-up TODOs: RATIFICATION_DATE needs confirmation
8
- -->
9
-
10
- # ZenUML Core Constitution
11
-
12
- ## Core Principles
13
-
14
- ### I. Parser Simplicity
15
-
16
- The ANTLR lexer and parser MUST remain simple and maintainable. Edge cases and
17
- complex scenarios SHALL be handled in utility methods or the renderer, not in the
18
- grammar. Reasonable fallbacks are preferred over grammar complexity. This ensures
19
- the parser remains understandable, testable, and maintainable while avoiding
20
- fragility from over-engineering.
21
-
22
- ### II. Task Focus
23
-
24
- When working on one task, focus on that task. Do not try to fix unrelated issues
25
- (code smell, inconsistency, or even defects). You SHALL mention unrelated issues
26
- but MUST NOT fix them. This ensures changes remain scoped, reviewable, and
27
- traceable to specific requirements.
28
-
29
- ## Governance
30
-
31
- The Constitution supersedes all other development practices. Amendments require documentation and versioning.
32
-
33
- **Version**: 1.1.0 | **Ratified**: TODO(RATIFICATION_DATE): Needs confirmation | **Last Amended**: 2025-10-06