@orderful/droid 0.26.0 → 0.27.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 (146) hide show
  1. package/.claude-plugin/marketplace.json +7 -7
  2. package/AGENTS.md +36 -32
  3. package/CHANGELOG.md +29 -0
  4. package/dist/bin/droid.js +102 -24
  5. package/dist/index.js +59 -25
  6. package/dist/lib/migrations.d.ts +8 -0
  7. package/dist/lib/migrations.d.ts.map +1 -1
  8. package/dist/lib/skills.d.ts.map +1 -1
  9. package/dist/lib/tools.d.ts.map +1 -1
  10. package/dist/lib/types.d.ts +10 -2
  11. package/dist/lib/types.d.ts.map +1 -1
  12. package/dist/tools/brain/.claude-plugin/plugin.json +1 -1
  13. package/dist/tools/brain/TOOL.yaml +7 -5
  14. package/dist/tools/brain/commands/brain.md +17 -49
  15. package/dist/tools/brain/commands/scratchpad.md +13 -50
  16. package/{src/tools/brain/skills/droid-brain → dist/tools/brain/skills/brain}/SKILL.md +5 -5
  17. package/dist/tools/brain/skills/{droid-brain-obsidian → brain-obsidian}/SKILL.md +8 -8
  18. package/dist/tools/coach/.claude-plugin/plugin.json +1 -1
  19. package/dist/tools/coach/TOOL.yaml +4 -3
  20. package/dist/tools/coach/commands/coach.md +14 -54
  21. package/{src/tools/coach/skills/droid-coach → dist/tools/coach/skills/coach}/SKILL.md +4 -3
  22. package/dist/tools/code-review/.claude-plugin/plugin.json +1 -1
  23. package/dist/tools/code-review/TOOL.yaml +4 -3
  24. package/dist/tools/code-review/commands/code-review.md +18 -102
  25. package/dist/tools/code-review/skills/code-review/SKILL.md +154 -0
  26. package/dist/tools/codex/.claude-plugin/plugin.json +1 -1
  27. package/dist/tools/codex/TOOL.yaml +4 -3
  28. package/dist/tools/codex/commands/codex.md +18 -65
  29. package/dist/tools/codex/skills/{droid-codex → codex}/SKILL.md +64 -45
  30. package/{src/tools/codex/skills/droid-codex → dist/tools/codex/skills/codex}/references/loading.md +94 -55
  31. package/dist/tools/codex/skills/codex/scripts/git-finish-write.d.ts.map +1 -0
  32. package/dist/tools/codex/skills/codex/scripts/git-preamble.d.ts.map +1 -0
  33. package/dist/tools/codex/skills/codex/scripts/git-start-write.d.ts.map +1 -0
  34. package/dist/tools/comments/.claude-plugin/plugin.json +1 -1
  35. package/dist/tools/comments/TOOL.yaml +4 -3
  36. package/dist/tools/comments/commands/comments.md +12 -14
  37. package/{src/tools/comments/skills/droid-comments → dist/tools/comments/skills/comments}/SKILL.md +3 -1
  38. package/dist/tools/project/.claude-plugin/plugin.json +1 -1
  39. package/dist/tools/project/TOOL.yaml +4 -3
  40. package/dist/tools/project/commands/project.md +12 -27
  41. package/dist/tools/project/skills/{droid-project → project}/SKILL.md +12 -11
  42. package/dist/tools/tech-design/.claude-plugin/plugin.json +1 -1
  43. package/dist/tools/tech-design/TOOL.yaml +4 -3
  44. package/dist/tools/tech-design/commands/tech-design.md +18 -80
  45. package/{src/tools/tech-design/skills/droid-tech-design → dist/tools/tech-design/skills/tech-design}/SKILL.md +1 -1
  46. package/package.json +1 -1
  47. package/src/commands/tui/components/Badge.test.tsx +10 -4
  48. package/src/commands/tui.tsx +4 -4
  49. package/src/lib/migrations.ts +95 -4
  50. package/src/lib/skills.test.ts +199 -74
  51. package/src/lib/skills.ts +55 -54
  52. package/src/lib/tools.ts +19 -12
  53. package/src/lib/types.ts +20 -5
  54. package/src/tools/brain/.claude-plugin/plugin.json +1 -1
  55. package/src/tools/brain/TOOL.yaml +7 -5
  56. package/src/tools/brain/commands/brain.md +17 -49
  57. package/src/tools/brain/commands/scratchpad.md +13 -50
  58. package/{dist/tools/brain/skills/droid-brain → src/tools/brain/skills/brain}/SKILL.md +5 -5
  59. package/src/tools/brain/skills/{droid-brain-obsidian → brain-obsidian}/SKILL.md +8 -8
  60. package/src/tools/coach/.claude-plugin/plugin.json +1 -1
  61. package/src/tools/coach/TOOL.yaml +4 -3
  62. package/src/tools/coach/commands/coach.md +14 -54
  63. package/{dist/tools/coach/skills/droid-coach → src/tools/coach/skills/coach}/SKILL.md +4 -3
  64. package/src/tools/code-review/.claude-plugin/plugin.json +1 -1
  65. package/src/tools/code-review/TOOL.yaml +4 -3
  66. package/src/tools/code-review/commands/code-review.md +18 -102
  67. package/src/tools/code-review/skills/code-review/SKILL.md +154 -0
  68. package/src/tools/codex/.claude-plugin/plugin.json +1 -1
  69. package/src/tools/codex/TOOL.yaml +4 -3
  70. package/src/tools/codex/commands/codex.md +18 -65
  71. package/src/tools/codex/skills/{droid-codex → codex}/SKILL.md +64 -45
  72. package/{dist/tools/codex/skills/droid-codex → src/tools/codex/skills/codex}/references/loading.md +94 -55
  73. package/src/tools/comments/.claude-plugin/plugin.json +1 -1
  74. package/src/tools/comments/TOOL.yaml +4 -3
  75. package/src/tools/comments/commands/comments.md +12 -14
  76. package/{dist/tools/comments/skills/droid-comments → src/tools/comments/skills/comments}/SKILL.md +3 -1
  77. package/src/tools/project/.claude-plugin/plugin.json +1 -1
  78. package/src/tools/project/TOOL.yaml +4 -3
  79. package/src/tools/project/commands/project.md +12 -27
  80. package/src/tools/project/skills/{droid-project → project}/SKILL.md +12 -11
  81. package/src/tools/tech-design/.claude-plugin/plugin.json +1 -1
  82. package/src/tools/tech-design/TOOL.yaml +4 -3
  83. package/src/tools/tech-design/commands/tech-design.md +18 -80
  84. package/{dist/tools/tech-design/skills/droid-tech-design → src/tools/tech-design/skills/tech-design}/SKILL.md +1 -1
  85. package/dist/tools/code-review/skills/droid-code-review/SKILL.md +0 -55
  86. package/dist/tools/codex/skills/droid-codex/scripts/git-finish-write.d.ts.map +0 -1
  87. package/dist/tools/codex/skills/droid-codex/scripts/git-preamble.d.ts.map +0 -1
  88. package/dist/tools/codex/skills/droid-codex/scripts/git-start-write.d.ts.map +0 -1
  89. package/src/tools/code-review/skills/droid-code-review/SKILL.md +0 -55
  90. /package/dist/tools/brain/skills/{droid-brain → brain}/references/metadata.md +0 -0
  91. /package/dist/tools/brain/skills/{droid-brain → brain}/references/naming.md +0 -0
  92. /package/dist/tools/brain/skills/{droid-brain → brain}/references/templates.md +0 -0
  93. /package/dist/tools/brain/skills/{droid-brain → brain}/references/workflows.md +0 -0
  94. /package/dist/tools/brain/skills/{droid-brain-obsidian → brain-obsidian}/references/templates.md +0 -0
  95. /package/dist/tools/brain/skills/{droid-brain-obsidian → brain-obsidian}/references/workflows.md +0 -0
  96. /package/dist/tools/codex/skills/{droid-codex → codex}/references/creating.md +0 -0
  97. /package/dist/tools/codex/skills/{droid-codex → codex}/references/decisions.md +0 -0
  98. /package/dist/tools/codex/skills/{droid-codex → codex}/references/topics.md +0 -0
  99. /package/dist/tools/codex/skills/{droid-codex → codex}/scripts/git-finish-write.d.ts +0 -0
  100. /package/dist/tools/codex/skills/{droid-codex → codex}/scripts/git-finish-write.ts +0 -0
  101. /package/dist/tools/codex/skills/{droid-codex → codex}/scripts/git-preamble.d.ts +0 -0
  102. /package/dist/tools/codex/skills/{droid-codex → codex}/scripts/git-preamble.ts +0 -0
  103. /package/dist/tools/codex/skills/{droid-codex → codex}/scripts/git-scripts.test.ts +0 -0
  104. /package/dist/tools/codex/skills/{droid-codex → codex}/scripts/git-start-write.d.ts +0 -0
  105. /package/dist/tools/codex/skills/{droid-codex → codex}/scripts/git-start-write.ts +0 -0
  106. /package/dist/tools/project/skills/{droid-project → project}/references/changelog.md +0 -0
  107. /package/dist/tools/project/skills/{droid-project → project}/references/creating.md +0 -0
  108. /package/dist/tools/project/skills/{droid-project → project}/references/loading.md +0 -0
  109. /package/dist/tools/project/skills/{droid-project → project}/references/templates.md +0 -0
  110. /package/dist/tools/project/skills/{droid-project → project}/references/updating.md +0 -0
  111. /package/dist/tools/project/skills/{droid-project → project}/references/versioning.md +0 -0
  112. /package/dist/tools/tech-design/skills/{droid-tech-design → tech-design}/references/draft.md +0 -0
  113. /package/dist/tools/tech-design/skills/{droid-tech-design → tech-design}/references/gaps.md +0 -0
  114. /package/dist/tools/tech-design/skills/{droid-tech-design → tech-design}/references/publish.md +0 -0
  115. /package/dist/tools/tech-design/skills/{droid-tech-design → tech-design}/references/research-doc-template.md +0 -0
  116. /package/dist/tools/tech-design/skills/{droid-tech-design → tech-design}/references/rollup-template.md +0 -0
  117. /package/dist/tools/tech-design/skills/{droid-tech-design → tech-design}/references/start.md +0 -0
  118. /package/dist/tools/tech-design/skills/{droid-tech-design → tech-design}/references/think.md +0 -0
  119. /package/dist/tools/tech-design/skills/{droid-tech-design → tech-design}/references/thought-doc-template.md +0 -0
  120. /package/src/tools/brain/skills/{droid-brain → brain}/references/metadata.md +0 -0
  121. /package/src/tools/brain/skills/{droid-brain → brain}/references/naming.md +0 -0
  122. /package/src/tools/brain/skills/{droid-brain → brain}/references/templates.md +0 -0
  123. /package/src/tools/brain/skills/{droid-brain → brain}/references/workflows.md +0 -0
  124. /package/src/tools/brain/skills/{droid-brain-obsidian → brain-obsidian}/references/templates.md +0 -0
  125. /package/src/tools/brain/skills/{droid-brain-obsidian → brain-obsidian}/references/workflows.md +0 -0
  126. /package/src/tools/codex/skills/{droid-codex → codex}/references/creating.md +0 -0
  127. /package/src/tools/codex/skills/{droid-codex → codex}/references/decisions.md +0 -0
  128. /package/src/tools/codex/skills/{droid-codex → codex}/references/topics.md +0 -0
  129. /package/src/tools/codex/skills/{droid-codex → codex}/scripts/git-finish-write.ts +0 -0
  130. /package/src/tools/codex/skills/{droid-codex → codex}/scripts/git-preamble.ts +0 -0
  131. /package/src/tools/codex/skills/{droid-codex → codex}/scripts/git-scripts.test.ts +0 -0
  132. /package/src/tools/codex/skills/{droid-codex → codex}/scripts/git-start-write.ts +0 -0
  133. /package/src/tools/project/skills/{droid-project → project}/references/changelog.md +0 -0
  134. /package/src/tools/project/skills/{droid-project → project}/references/creating.md +0 -0
  135. /package/src/tools/project/skills/{droid-project → project}/references/loading.md +0 -0
  136. /package/src/tools/project/skills/{droid-project → project}/references/templates.md +0 -0
  137. /package/src/tools/project/skills/{droid-project → project}/references/updating.md +0 -0
  138. /package/src/tools/project/skills/{droid-project → project}/references/versioning.md +0 -0
  139. /package/src/tools/tech-design/skills/{droid-tech-design → tech-design}/references/draft.md +0 -0
  140. /package/src/tools/tech-design/skills/{droid-tech-design → tech-design}/references/gaps.md +0 -0
  141. /package/src/tools/tech-design/skills/{droid-tech-design → tech-design}/references/publish.md +0 -0
  142. /package/src/tools/tech-design/skills/{droid-tech-design → tech-design}/references/research-doc-template.md +0 -0
  143. /package/src/tools/tech-design/skills/{droid-tech-design → tech-design}/references/rollup-template.md +0 -0
  144. /package/src/tools/tech-design/skills/{droid-tech-design → tech-design}/references/start.md +0 -0
  145. /package/src/tools/tech-design/skills/{droid-tech-design → tech-design}/references/think.md +0 -0
  146. /package/src/tools/tech-design/skills/{droid-tech-design → tech-design}/references/thought-doc-template.md +0 -0
@@ -22,7 +22,7 @@
22
22
  {
23
23
  "name": "droid-brain",
24
24
  "description": "Your scratchpad (or brain) - a collaborative space for planning and research. Create docs with /brain plan, /brain research, or /brain review. Use @mentions for async discussion. Docs persist across sessions.",
25
- "version": "0.2.3",
25
+ "version": "0.3.0",
26
26
  "source": {
27
27
  "source": "github",
28
28
  "repo": "orderful/droid",
@@ -35,7 +35,7 @@
35
35
  {
36
36
  "name": "droid-coach",
37
37
  "description": "Learning-mode AI assistance - AI as coach, not crutch. Use /coach plan for co-authored planning, /coach scaffold for structure with hints, /coach review for Socratic questions.",
38
- "version": "0.1.3",
38
+ "version": "0.2.0",
39
39
  "source": {
40
40
  "source": "github",
41
41
  "repo": "orderful/droid",
@@ -48,7 +48,7 @@
48
48
  {
49
49
  "name": "droid-code-review",
50
50
  "description": "Comprehensive code review using specialized agents. Reviews PRs, staged changes, branches, or specific files with confidence scoring.",
51
- "version": "0.1.2",
51
+ "version": "0.2.0",
52
52
  "source": {
53
53
  "source": "github",
54
54
  "repo": "orderful/droid",
@@ -61,7 +61,7 @@
61
61
  {
62
62
  "name": "droid-codex",
63
63
  "description": "Shared organizational knowledge - PRDs, tech designs, domains, proposals, patterns, and explored topics. Use when loading project context, searching codex, capturing decisions, or creating new entries.",
64
- "version": "0.1.5",
64
+ "version": "0.1.6",
65
65
  "source": {
66
66
  "source": "github",
67
67
  "repo": "orderful/droid",
@@ -74,7 +74,7 @@
74
74
  {
75
75
  "name": "droid-comments",
76
76
  "description": "Enable inline conversations using @droid/@user markers. Tag @droid to ask the AI, AI responds with @{your-name}. Use /comments check to address markers, /comments cleanup to remove resolved threads. Ideal for code review notes and async collaboration.",
77
- "version": "0.2.6",
77
+ "version": "0.3.0",
78
78
  "source": {
79
79
  "source": "github",
80
80
  "repo": "orderful/droid",
@@ -87,7 +87,7 @@
87
87
  {
88
88
  "name": "droid-project",
89
89
  "description": "Manage project context files for persistent AI memory across sessions. Load, update, or create project context before working on multi-session features.",
90
- "version": "0.2.0",
90
+ "version": "0.3.0",
91
91
  "source": {
92
92
  "source": "github",
93
93
  "repo": "orderful/droid",
@@ -100,7 +100,7 @@
100
100
  {
101
101
  "name": "droid-tech-design",
102
102
  "description": "Technical design authoring tool for engineers. Create structured tech design docs with /tech-design start, iterate in brain, publish to codex. Three-document approach: research doc (codebase discoveries) + thought doc (design workspace) + roll-up (clean summary for review).",
103
- "version": "0.1.0",
103
+ "version": "0.2.0",
104
104
  "source": {
105
105
  "source": "github",
106
106
  "repo": "orderful/droid",
package/AGENTS.md CHANGED
@@ -50,12 +50,13 @@ src/
50
50
 
51
51
  We use **two** terminal UI libraries for different purposes:
52
52
 
53
- | Library | Purpose | Used In |
54
- |---------|---------|---------|
55
- | **Ink** | Full React-based TUI dashboard | `tui.tsx`, `tui/components/`, `tui/views/` |
53
+ | Library | Purpose | Used In |
54
+ | ------------ | ------------------------------------------- | ------------------------------------------ |
55
+ | **Ink** | Full React-based TUI dashboard | `tui.tsx`, `tui/components/`, `tui/views/` |
56
56
  | **Inquirer** | Simple CLI prompts (select, confirm, input) | `skills.ts`, `setup.ts`, `skill-config.ts` |
57
57
 
58
58
  **Why both?**
59
+
59
60
  - **Ink** is for the interactive dashboard—stateful, component-based, keyboard navigation
60
61
  - **Inquirer** is for quick sequential prompts ("Which tool?", "Configure now? y/n")
61
62
 
@@ -78,13 +79,12 @@ Don't consolidate them. Using Ink for simple prompts would be overkill.
78
79
 
79
80
  Things that will bite you if you don't know:
80
81
 
81
- | Gotcha | Why | What to do |
82
- |--------|-----|------------|
83
- | Single-line YAML descriptions | Claude Code's frontmatter parser doesn't handle multiline YAML (`>-`) | Use single-line quoted strings in frontmatter |
84
- | Skill directories have `droid-` prefix | Workaround for Claude Code bug where directories matching command names block invocation | Name skill dirs `droid-{name}/`, commands stay as `{name}.md` |
85
- | Bump tool version when skill content changes | Users won't get updates otherwise | Patch bump the tool's TOOL.yaml version |
86
- | Config-first in commands | User overrides must take precedence | Always read `~/.droid/skills/{skill}/overrides.yaml` before using defaults |
87
- | Changeset package name | npm package is scoped | Use `"@orderful/droid"` not `"droid"` in changesets |
82
+ | Gotcha | Why | What to do |
83
+ | -------------------------------------------- | --------------------------------------------------------------------- | -------------------------------------------------------------------------- |
84
+ | Single-line YAML descriptions | Claude Code's frontmatter parser doesn't handle multiline YAML (`>-`) | Use single-line quoted strings in frontmatter |
85
+ | Bump tool version when skill content changes | Users won't get updates otherwise | Patch bump the tool's TOOL.yaml version |
86
+ | Config-first in commands | User overrides must take precedence | Always read `~/.droid/skills/{skill}/overrides.yaml` before using defaults |
87
+ | Changeset package name | npm package is scoped | Use `"@orderful/droid"` not `"droid"` in changesets |
88
88
 
89
89
  ## Testing
90
90
 
@@ -96,6 +96,7 @@ bun run screenshot # On-demand TUI screenshot for visual verification
96
96
  ```
97
97
 
98
98
  **When to run what:**
99
+
99
100
  - Changed core logic (`lib/`) → `bun test src/`
100
101
  - Changed TUI components → `bun run test:tui`
101
102
  - Visual changes you want to verify → `bun run screenshot`
@@ -107,7 +108,7 @@ bun run screenshot # On-demand TUI screenshot for visual verification
107
108
  2. Add `SKILL.md` with frontmatter:
108
109
  ```yaml
109
110
  ---
110
- name: droid-{skill}
111
+ name: { skill }
111
112
  description: "{What it does}. Use when {scenarios}. User prompts like {examples}."
112
113
  globs: []
113
114
  alwaysApply: false
@@ -124,16 +125,16 @@ bun run screenshot # On-demand TUI screenshot for visual verification
124
125
 
125
126
  Each tool has a specific domain. Know where your feature belongs:
126
127
 
127
- | Tool | Purpose | Add skills here when... |
128
- |------|---------|------------------------|
129
- | `brain` | Personal scratchpad, planning docs | Working with brain vault, planning, research |
130
- | `coach` | Learning-mode assistance | Educational interactions, scaffolding |
131
- | `code-review` | PR and code review | Review-related features |
132
- | `codex` | Shared org knowledge (PRDs, designs) | Codex content management, org context |
133
- | `comments` | Inline @mentions in code | Comment handling, async collaboration |
134
- | `droid` | **Meta-tool only** - updates, discovery | NEVER add skills here - create new tool instead |
135
- | `project` | Personal project context | Project file management |
136
- | `tech-design` | Tech design authoring | Tech design workflows |
128
+ | Tool | Purpose | Add skills here when... |
129
+ | ------------- | --------------------------------------- | ----------------------------------------------- |
130
+ | `brain` | Personal scratchpad, planning docs | Working with brain vault, planning, research |
131
+ | `coach` | Learning-mode assistance | Educational interactions, scaffolding |
132
+ | `code-review` | PR and code review | Review-related features |
133
+ | `codex` | Shared org knowledge (PRDs, designs) | Codex content management, org context |
134
+ | `comments` | Inline @mentions in code | Comment handling, async collaboration |
135
+ | `droid` | **Meta-tool only** - updates, discovery | NEVER add skills here - create new tool instead |
136
+ | `project` | Personal project context | Project file management |
137
+ | `tech-design` | Tech design authoring | Tech design workflows |
137
138
 
138
139
  > **Important:** The `droid` tool is special. It only handles update awareness and tool discovery.
139
140
  > If you're building a full-featured capability (like tech-design, codex, brain), create a **new tool**.
@@ -141,6 +142,7 @@ Each tool has a specific domain. Know where your feature belongs:
141
142
  ## Adding a New Tool
142
143
 
143
144
  Create a new tool when the feature:
145
+
144
146
  - Has its own user-facing identity (e.g., `/tech-design`, `/deploy`)
145
147
  - Doesn't naturally belong to an existing tool's domain
146
148
  - Needs its own versioning/release cycle
@@ -150,24 +152,26 @@ Create a new tool when the feature:
150
152
 
151
153
  1. Create directory: `src/tools/{tool}/`
152
154
  2. Add `TOOL.yaml`:
155
+
153
156
  ```yaml
154
- name: {tool}
157
+ name: { tool }
155
158
  description: "What this tool does"
156
159
  version: 0.1.0
157
160
  status: beta
158
161
 
159
162
  includes:
160
163
  skills:
161
- - name: droid-{tool}
164
+ - name: { tool }
162
165
  required: true
163
166
  commands:
164
- - name: {tool}
167
+ - name: { tool }
165
168
  required: false
166
169
  agents: []
167
170
 
168
171
  dependencies: []
169
172
  ```
170
- 3. Create skill: `src/tools/{tool}/skills/droid-{tool}/SKILL.md`
173
+
174
+ 3. Create skill: `src/tools/{tool}/skills/{tool}/SKILL.md`
171
175
  4. Create command: `src/tools/{tool}/commands/{tool}.md`
172
176
  5. Add changeset: `.changeset/{tool}-initial.md`
173
177
 
@@ -177,10 +181,10 @@ Create a new tool when the feature:
177
181
 
178
182
  Decisions that affect how you work:
179
183
 
180
- | Decision | Rationale |
181
- |----------|-----------|
182
- | "Scripts" not "tools" for skill CLIs | Avoids terminology collision—droid "tools" are packages, skill "scripts" are executables |
183
- | Parallel skills (`{skill}-next`) for risky refactors | Dogfood new implementation alongside original, swap when confident |
184
- | Each .md owns its metadata | Single source of truth per artifact, contributors can bring existing skills as-is |
185
- | Ink + Inquirer (not consolidated) | Ink for stateful TUI, Inquirer for simple prompts—right tool for each job |
186
- | Collision detection over prefixing | Detect conflicts at install time rather than polluting command names with prefixes |
184
+ | Decision | Rationale |
185
+ | ---------------------------------------------------- | ---------------------------------------------------------------------------------------- |
186
+ | "Scripts" not "tools" for skill CLIs | Avoids terminology collision—droid "tools" are packages, skill "scripts" are executables |
187
+ | Parallel skills (`{skill}-next`) for risky refactors | Dogfood new implementation alongside original, swap when confident |
188
+ | Each .md owns its metadata | Single source of truth per artifact, contributors can bring existing skills as-is |
189
+ | Ink + Inquirer (not consolidated) | Ink for stateful TUI, Inquirer for simple prompts—right tool for each job |
190
+ | Collision detection over prefixing | Detect conflicts at install time rather than polluting command names with prefixes |
package/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # @orderful/droid
2
2
 
3
+ ## 0.27.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#145](https://github.com/Orderful/droid/pull/145) [`8bce17d`](https://github.com/Orderful/droid/commit/8bce17d98824e796573db1f8a640a8af786fc2d1) Thanks [@frytyler](https://github.com/frytyler)! - Remove droid- prefix from skills and fix command argument passing
8
+
9
+ **Breaking internal changes:**
10
+ - Skills renamed: `droid-brain` → `brain`, `droid-comments` → `comments`, etc.
11
+ - All skill directories now use unprefixed names
12
+ - Automatic cleanup removes old `droid-*` directories on upgrade
13
+
14
+ **Command improvements:**
15
+ - Commands now use explicit instruction pattern for better argument passing in OpenCode
16
+ - Each command file includes examples and quick reference
17
+ - Alias commands (e.g., `/scratchpad`) properly documented as aliases
18
+
19
+ **Platform compatibility:**
20
+ - OpenCode: Receives all commands (for autocomplete)
21
+ - Claude Code: Receives only alias commands (relies on unified skills/commands)
22
+ - Both platforms get unprefixed skill names
23
+
24
+ Tools updated: brain, coach, code-review, codex, comments, project, tech-design
25
+
26
+ ### Patch Changes
27
+
28
+ - [#146](https://github.com/Orderful/droid/pull/146) [`2c87b87`](https://github.com/Orderful/droid/commit/2c87b874a38b0f52d1edf77b2995e565f155f251) Thanks [@frytyler](https://github.com/frytyler)! - fix(codex): make CONTEXT.md generation synchronous by default with optional async
29
+
30
+ Changed auto-generation from async-only (with background agents) to flexible approach where LLM can choose synchronous (works everywhere) or asynchronous (Claude Code only). This fixes the issue where CONTEXT.md files were never being generated because background agents weren't working reliably.
31
+
3
32
  ## 0.26.0
4
33
 
5
34
  ### Minor Changes
package/dist/bin/droid.js CHANGED
@@ -392,7 +392,9 @@ function getToolsWithUpdates() {
392
392
  const toolsWithUpdates = [];
393
393
  for (const tool of bundledTools) {
394
394
  const requiredSkills = tool.includes.skills.filter((s) => s.required).map((s) => s.name);
395
- const isInstalled = requiredSkills.some((skillName) => skillName in installedTools);
395
+ const isInstalled = requiredSkills.some(
396
+ (skillName) => skillName in installedTools
397
+ );
396
398
  if (isInstalled) {
397
399
  const updateStatus = getToolUpdateStatus(tool.name);
398
400
  if (updateStatus.hasUpdate) {
@@ -613,27 +615,38 @@ function createPlatformSyncMigration(version2) {
613
615
  }
614
616
  };
615
617
  }
618
+ var PACKAGE_MIGRATIONS = [createPlatformSyncMigration("0.25.0")];
616
619
  var TOOL_MIGRATIONS = {
617
620
  brain: [createConfigDirMigration("droid-brain", "0.2.3")],
618
621
  comments: [createConfigDirMigration("droid-comments", "0.2.6")],
619
622
  project: [createConfigDirMigration("droid-project", "0.1.5")],
620
- coach: [createConfigDirMigration("droid-coach", "0.1.3")],
621
- // Global migration for the droid meta-tool
622
- droid: [createPlatformSyncMigration("0.25.0")]
623
+ coach: [createConfigDirMigration("droid-coach", "0.1.3")]
623
624
  };
624
625
  function getToolMigrations(toolName) {
625
626
  return TOOL_MIGRATIONS[toolName] ?? [];
626
627
  }
627
628
  function getLastMigratedVersion(toolName) {
628
629
  const config = loadConfig();
629
- return config.migrations?.[toolName] ?? "0.0.0";
630
+ if (config.migrations?.tools?.[toolName]) {
631
+ return config.migrations.tools[toolName];
632
+ }
633
+ if (config.migrations && typeof config.migrations[toolName] === "string") {
634
+ return config.migrations[toolName];
635
+ }
636
+ return "0.0.0";
630
637
  }
631
638
  function setLastMigratedVersion(toolName, version2) {
632
639
  const config = loadConfig();
633
640
  if (!config.migrations) {
634
641
  config.migrations = {};
635
642
  }
636
- config.migrations[toolName] = version2;
643
+ if (!config.migrations.tools) {
644
+ config.migrations.tools = {};
645
+ }
646
+ config.migrations.tools[toolName] = version2;
647
+ if (typeof config.migrations[toolName] === "string") {
648
+ delete config.migrations[toolName];
649
+ }
637
650
  saveConfig(config);
638
651
  }
639
652
  function runMigrations(toolName, fromVersion, toVersion) {
@@ -677,6 +690,48 @@ function runToolMigrations(toolName, installedVersion) {
677
690
  }
678
691
  return runMigrations(toolName, lastMigrated, installedVersion);
679
692
  }
693
+ function runPackageMigrations(packageVersion) {
694
+ const config = loadConfig();
695
+ const lastMigrated = config.migrations?.package ?? "0.0.0";
696
+ if (compareSemver(packageVersion, lastMigrated) <= 0) {
697
+ return { success: true };
698
+ }
699
+ const pendingMigrations = PACKAGE_MIGRATIONS.filter((m) => {
700
+ const afterFrom = compareSemver(m.version, lastMigrated) > 0;
701
+ const beforeOrAtTo = compareSemver(m.version, packageVersion) <= 0;
702
+ return afterFrom && beforeOrAtTo;
703
+ });
704
+ if (pendingMigrations.length === 0) {
705
+ config.migrations = config.migrations || {};
706
+ config.migrations.package = packageVersion;
707
+ saveConfig(config);
708
+ return { success: true };
709
+ }
710
+ const configDir = getConfigDir();
711
+ for (const migration of pendingMigrations) {
712
+ try {
713
+ migration.up(configDir);
714
+ logMigration("package", lastMigrated, migration.version, "OK");
715
+ } catch (error) {
716
+ const errorMessage = error instanceof Error ? error.message : String(error);
717
+ logMigration(
718
+ "package",
719
+ lastMigrated,
720
+ migration.version,
721
+ "FAILED",
722
+ errorMessage
723
+ );
724
+ return {
725
+ success: false,
726
+ error: `Package migration ${migration.version} failed: ${errorMessage}`
727
+ };
728
+ }
729
+ }
730
+ config.migrations = config.migrations || {};
731
+ config.migrations.package = packageVersion;
732
+ saveConfig(config);
733
+ return { success: true };
734
+ }
680
735
 
681
736
  // src/lib/skills.ts
682
737
  var DROID_SKILLS_START = "<!-- droid-skills-start -->";
@@ -861,6 +916,13 @@ function installSkill(skillName) {
861
916
  message: `Invalid skill manifest for '${skillName}'`
862
917
  };
863
918
  }
919
+ const toolManifest = loadToolManifest(toolDir);
920
+ if (!toolManifest) {
921
+ return {
922
+ success: false,
923
+ message: `Invalid tool manifest for tool containing '${skillName}'`
924
+ };
925
+ }
864
926
  if (manifest.dependencies) {
865
927
  for (const dep of manifest.dependencies) {
866
928
  if (!isToolInstalled(dep)) {
@@ -875,31 +937,39 @@ function installSkill(skillName) {
875
937
  const targetSkillDir = join7(skillsPath, skillName);
876
938
  const commandsPath = getCommandsInstallPath(config.platform);
877
939
  const tools = getPlatformTools(config);
878
- if (skillName.startsWith("droid-")) {
879
- const oldSkillName2 = skillName.replace(/^droid-/, "");
880
- const oldSkillDir = join7(skillsPath, oldSkillName2);
881
- if (existsSync5(oldSkillDir)) {
940
+ const renamedSkills = [
941
+ "comments",
942
+ "brain",
943
+ "project",
944
+ "coach",
945
+ "code-review",
946
+ "codex",
947
+ "tech-design",
948
+ "brain-obsidian"
949
+ ];
950
+ if (renamedSkills.includes(skillName)) {
951
+ const droidPrefixedName = `droid-${skillName}`;
952
+ const droidPrefixedDir = join7(skillsPath, droidPrefixedName);
953
+ if (existsSync5(droidPrefixedDir)) {
882
954
  try {
883
- rmSync2(oldSkillDir, { recursive: true });
955
+ rmSync2(droidPrefixedDir, { recursive: true });
884
956
  } catch (error) {
885
957
  console.warn(
886
- `Warning: Could not remove old skill directory ${oldSkillDir}: ${error}`
958
+ `Warning: Could not remove old skill directory ${droidPrefixedDir}: ${error}`
887
959
  );
888
960
  }
889
961
  }
890
- if (tools[oldSkillName2]) {
891
- delete tools[oldSkillName2];
962
+ if (tools[droidPrefixedName]) {
963
+ delete tools[droidPrefixedName];
892
964
  setPlatformTools(config, tools);
893
965
  saveConfig(config);
894
966
  }
895
967
  }
896
968
  const commandsSource = join7(toolDir, "commands");
897
969
  const agentsSource = join7(toolDir, "agents");
898
- const oldSkillName = skillName.startsWith("droid-") ? skillName.replace(/^droid-/, "") : null;
899
- const isAlreadyInstalled = tools[skillName] || oldSkillName && tools[oldSkillName];
970
+ const isAlreadyInstalled = tools[skillName];
900
971
  if (!isAlreadyInstalled) {
901
972
  const toolName2 = basename(toolDir);
902
- const normalizedToolName = toolName2.replace(/^droid-/, "");
903
973
  if (existsSync5(commandsSource)) {
904
974
  const commandFiles = readdirSync4(commandsSource).filter(
905
975
  (f) => f.endsWith(".md") && f.toLowerCase() !== "readme.md"
@@ -908,7 +978,7 @@ function installSkill(skillName) {
908
978
  const targetCommandPath = join7(commandsPath, file);
909
979
  if (existsSync5(targetCommandPath)) {
910
980
  const commandName = file.replace(".md", "");
911
- if (commandName === toolName2 || commandName === normalizedToolName) {
981
+ if (commandName === toolName2) {
912
982
  continue;
913
983
  }
914
984
  return {
@@ -982,10 +1052,18 @@ function installSkill(skillName) {
982
1052
  (f) => f.endsWith(".md") && f.toLowerCase() !== "readme.md"
983
1053
  );
984
1054
  for (const file of commandFiles) {
985
- const sourcePath = join7(commandsSource, file);
986
- const targetPath = join7(commandsPath, file);
987
- const content = readFileSync5(sourcePath, "utf-8");
988
- writeFileSync3(targetPath, content);
1055
+ const commandName = file.replace(".md", "");
1056
+ const commandMeta = toolManifest.includes.commands.find(
1057
+ (cmd) => (typeof cmd === "string" ? cmd : cmd.name) === commandName
1058
+ );
1059
+ const isAlias = typeof commandMeta === "object" && commandMeta.is_alias;
1060
+ const shouldInstall = config.platform === "opencode" /* OpenCode */ || isAlias;
1061
+ if (shouldInstall) {
1062
+ const sourcePath = join7(commandsSource, file);
1063
+ const targetPath = join7(commandsPath, file);
1064
+ const content = readFileSync5(sourcePath, "utf-8");
1065
+ writeFileSync3(targetPath, content);
1066
+ }
989
1067
  }
990
1068
  }
991
1069
  const installedAgents = [];
@@ -2985,8 +3063,8 @@ function App() {
2985
3063
  }
2986
3064
  });
2987
3065
  useEffect(() => {
2988
- const droidVersion = getVersion();
2989
- runToolMigrations("droid", droidVersion);
3066
+ const packageVersion = getVersion();
3067
+ runPackageMigrations(packageVersion);
2990
3068
  }, []);
2991
3069
  useEffect(() => {
2992
3070
  const autoUpdateConfig = getAutoUpdateConfig();
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  // src/lib/types.ts
2
- var Platform = /* @__PURE__ */ ((Platform3) => {
3
- Platform3["ClaudeCode"] = "claude-code";
4
- Platform3["OpenCode"] = "opencode";
5
- return Platform3;
2
+ var Platform = /* @__PURE__ */ ((Platform2) => {
3
+ Platform2["ClaudeCode"] = "claude-code";
4
+ Platform2["OpenCode"] = "opencode";
5
+ return Platform2;
6
6
  })(Platform || {});
7
7
  var AIToolValue = Platform;
8
8
  function getAITag() {
@@ -578,27 +578,38 @@ function createPlatformSyncMigration(version) {
578
578
  }
579
579
  };
580
580
  }
581
+ var PACKAGE_MIGRATIONS = [createPlatformSyncMigration("0.25.0")];
581
582
  var TOOL_MIGRATIONS = {
582
583
  brain: [createConfigDirMigration("droid-brain", "0.2.3")],
583
584
  comments: [createConfigDirMigration("droid-comments", "0.2.6")],
584
585
  project: [createConfigDirMigration("droid-project", "0.1.5")],
585
- coach: [createConfigDirMigration("droid-coach", "0.1.3")],
586
- // Global migration for the droid meta-tool
587
- droid: [createPlatformSyncMigration("0.25.0")]
586
+ coach: [createConfigDirMigration("droid-coach", "0.1.3")]
588
587
  };
589
588
  function getToolMigrations(toolName) {
590
589
  return TOOL_MIGRATIONS[toolName] ?? [];
591
590
  }
592
591
  function getLastMigratedVersion(toolName) {
593
592
  const config = loadConfig();
594
- return config.migrations?.[toolName] ?? "0.0.0";
593
+ if (config.migrations?.tools?.[toolName]) {
594
+ return config.migrations.tools[toolName];
595
+ }
596
+ if (config.migrations && typeof config.migrations[toolName] === "string") {
597
+ return config.migrations[toolName];
598
+ }
599
+ return "0.0.0";
595
600
  }
596
601
  function setLastMigratedVersion(toolName, version) {
597
602
  const config = loadConfig();
598
603
  if (!config.migrations) {
599
604
  config.migrations = {};
600
605
  }
601
- config.migrations[toolName] = version;
606
+ if (!config.migrations.tools) {
607
+ config.migrations.tools = {};
608
+ }
609
+ config.migrations.tools[toolName] = version;
610
+ if (typeof config.migrations[toolName] === "string") {
611
+ delete config.migrations[toolName];
612
+ }
602
613
  saveConfig(config);
603
614
  }
604
615
  function runMigrations(toolName, fromVersion, toVersion) {
@@ -875,6 +886,13 @@ function installSkill(skillName) {
875
886
  message: `Invalid skill manifest for '${skillName}'`
876
887
  };
877
888
  }
889
+ const toolManifest = loadToolManifest(toolDir);
890
+ if (!toolManifest) {
891
+ return {
892
+ success: false,
893
+ message: `Invalid tool manifest for tool containing '${skillName}'`
894
+ };
895
+ }
878
896
  if (manifest.dependencies) {
879
897
  for (const dep of manifest.dependencies) {
880
898
  if (!isToolInstalled(dep)) {
@@ -889,31 +907,39 @@ function installSkill(skillName) {
889
907
  const targetSkillDir = join7(skillsPath, skillName);
890
908
  const commandsPath = getCommandsInstallPath(config.platform);
891
909
  const tools = getPlatformTools(config);
892
- if (skillName.startsWith("droid-")) {
893
- const oldSkillName2 = skillName.replace(/^droid-/, "");
894
- const oldSkillDir = join7(skillsPath, oldSkillName2);
895
- if (existsSync5(oldSkillDir)) {
910
+ const renamedSkills = [
911
+ "comments",
912
+ "brain",
913
+ "project",
914
+ "coach",
915
+ "code-review",
916
+ "codex",
917
+ "tech-design",
918
+ "brain-obsidian"
919
+ ];
920
+ if (renamedSkills.includes(skillName)) {
921
+ const droidPrefixedName = `droid-${skillName}`;
922
+ const droidPrefixedDir = join7(skillsPath, droidPrefixedName);
923
+ if (existsSync5(droidPrefixedDir)) {
896
924
  try {
897
- rmSync2(oldSkillDir, { recursive: true });
925
+ rmSync2(droidPrefixedDir, { recursive: true });
898
926
  } catch (error) {
899
927
  console.warn(
900
- `Warning: Could not remove old skill directory ${oldSkillDir}: ${error}`
928
+ `Warning: Could not remove old skill directory ${droidPrefixedDir}: ${error}`
901
929
  );
902
930
  }
903
931
  }
904
- if (tools[oldSkillName2]) {
905
- delete tools[oldSkillName2];
932
+ if (tools[droidPrefixedName]) {
933
+ delete tools[droidPrefixedName];
906
934
  setPlatformTools(config, tools);
907
935
  saveConfig(config);
908
936
  }
909
937
  }
910
938
  const commandsSource = join7(toolDir, "commands");
911
939
  const agentsSource = join7(toolDir, "agents");
912
- const oldSkillName = skillName.startsWith("droid-") ? skillName.replace(/^droid-/, "") : null;
913
- const isAlreadyInstalled = tools[skillName] || oldSkillName && tools[oldSkillName];
940
+ const isAlreadyInstalled = tools[skillName];
914
941
  if (!isAlreadyInstalled) {
915
942
  const toolName2 = basename(toolDir);
916
- const normalizedToolName = toolName2.replace(/^droid-/, "");
917
943
  if (existsSync5(commandsSource)) {
918
944
  const commandFiles = readdirSync4(commandsSource).filter(
919
945
  (f) => f.endsWith(".md") && f.toLowerCase() !== "readme.md"
@@ -922,7 +948,7 @@ function installSkill(skillName) {
922
948
  const targetCommandPath = join7(commandsPath, file);
923
949
  if (existsSync5(targetCommandPath)) {
924
950
  const commandName = file.replace(".md", "");
925
- if (commandName === toolName2 || commandName === normalizedToolName) {
951
+ if (commandName === toolName2) {
926
952
  continue;
927
953
  }
928
954
  return {
@@ -996,10 +1022,18 @@ function installSkill(skillName) {
996
1022
  (f) => f.endsWith(".md") && f.toLowerCase() !== "readme.md"
997
1023
  );
998
1024
  for (const file of commandFiles) {
999
- const sourcePath = join7(commandsSource, file);
1000
- const targetPath = join7(commandsPath, file);
1001
- const content = readFileSync5(sourcePath, "utf-8");
1002
- writeFileSync3(targetPath, content);
1025
+ const commandName = file.replace(".md", "");
1026
+ const commandMeta = toolManifest.includes.commands.find(
1027
+ (cmd) => (typeof cmd === "string" ? cmd : cmd.name) === commandName
1028
+ );
1029
+ const isAlias = typeof commandMeta === "object" && commandMeta.is_alias;
1030
+ const shouldInstall = config.platform === "opencode" /* OpenCode */ || isAlias;
1031
+ if (shouldInstall) {
1032
+ const sourcePath = join7(commandsSource, file);
1033
+ const targetPath = join7(commandsPath, file);
1034
+ const content = readFileSync5(sourcePath, "utf-8");
1035
+ writeFileSync3(targetPath, content);
1036
+ }
1003
1037
  }
1004
1038
  }
1005
1039
  const installedAgents = [];
@@ -27,4 +27,12 @@ export declare function runToolMigrations(toolName: string, installedVersion: st
27
27
  success: boolean;
28
28
  error?: string;
29
29
  };
30
+ /**
31
+ * Run package-level migrations
32
+ * Call this on TUI startup with package version from package.json
33
+ */
34
+ export declare function runPackageMigrations(packageVersion: string): {
35
+ success: boolean;
36
+ error?: string;
37
+ };
30
38
  //# sourceMappingURL=migrations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/lib/migrations.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,SAAS,EAIf,MAAM,SAAS,CAAC;AAgKjB;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,CAE/D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,IAAI,CAON;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CA2CtC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GACvB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAStC"}
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/lib/migrations.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,SAAS,EAIf,MAAM,SAAS,CAAC;AAsKjB;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,CAE/D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAc/D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,IAAI,CAmBN;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CA2CtC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GACvB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAStC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG;IAC5D,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAqDA"}
@@ -1 +1 @@
1
- {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/lib/skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/lib/skills.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,QAAQ,EACR,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,cAAc,EAGpB,MAAM,SAAS,CAAC;AAkBjB;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAEjE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,MAAM,EAAE,GACxB,IAAI,CAyCN;AAwBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CA2BxE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,GAChB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAwB9C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,EAAE,CA4BlD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAI3D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAI1E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG;IACvD,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAkBA;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,KAAK,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC,CAqBD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CA+BA;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI;IACjC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,QAAQ,EAAE,MAAM,CAAC;CAClB,CAiCA;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAuQA;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAkDA;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM,CAUlE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAkBT;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAqDvC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAwCvC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/lib/tools.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,YAAY,EAAyD,MAAM,SAAS,CAAC;AAMnG;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAyBrE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,EAAE,CAmBhD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAczD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiCvE;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAuBpE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,cAAc,EAAE,CAyBtD"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/lib/tools.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,YAAY,EAIlB,MAAM,SAAS,CAAC;AAMjB;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAyBrE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,EAAE,CAmBhD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAczD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiCvE;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAuBpE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,cAAc,EAAE,CA2BtD"}