@bvdm/delano 0.2.0 → 0.2.2

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 (39) hide show
  1. package/.delano/viewer/public/explorer.svg +2 -2
  2. package/.delano/viewer/public/index.html +21 -21
  3. package/.delano/viewer/public/markdown.svg +5 -5
  4. package/.delano/viewer/public/styles.css +1042 -1042
  5. package/.delano/viewer/public/vscode.svg +23 -23
  6. package/LICENSE +21 -0
  7. package/README.md +68 -5
  8. package/assets/payload/.agents/hooks/bash-worktree-fix.sh +0 -0
  9. package/assets/payload/.agents/hooks/post-tool-logger.js +0 -0
  10. package/assets/payload/.agents/hooks/session-tracker.js +0 -0
  11. package/assets/payload/.agents/hooks/user-prompt-logger.js +0 -0
  12. package/assets/payload/.agents/scripts/check-log-safety.sh +0 -0
  13. package/assets/payload/.agents/scripts/check-path-standards.sh +0 -0
  14. package/assets/payload/.agents/scripts/fix-path-standards.sh +0 -0
  15. package/assets/payload/.agents/scripts/git-sparse-download.sh +0 -0
  16. package/assets/payload/.agents/scripts/log-event.js +0 -0
  17. package/assets/payload/.agents/scripts/log-event.sh +0 -0
  18. package/assets/payload/.agents/scripts/pm/blocked.sh +0 -0
  19. package/assets/payload/.agents/scripts/pm/epic-list.sh +0 -0
  20. package/assets/payload/.agents/scripts/pm/in-progress.sh +0 -0
  21. package/assets/payload/.agents/scripts/pm/init.sh +0 -0
  22. package/assets/payload/.agents/scripts/pm/next.sh +0 -0
  23. package/assets/payload/.agents/scripts/pm/prd-list.sh +0 -0
  24. package/assets/payload/.agents/scripts/pm/search.sh +0 -0
  25. package/assets/payload/.agents/scripts/pm/standup.sh +0 -0
  26. package/assets/payload/.agents/scripts/pm/status.sh +0 -0
  27. package/assets/payload/.agents/scripts/pm/validate.sh +0 -0
  28. package/assets/payload/.agents/scripts/query-log.sh +0 -0
  29. package/assets/payload/.agents/scripts/test-and-log.sh +0 -0
  30. package/assets/payload/.delano/viewer/public/explorer.svg +2 -2
  31. package/assets/payload/.delano/viewer/public/index.html +21 -21
  32. package/assets/payload/.delano/viewer/public/markdown.svg +5 -5
  33. package/assets/payload/.delano/viewer/public/styles.css +1042 -1042
  34. package/assets/payload/.delano/viewer/public/vscode.svg +23 -23
  35. package/assets/payload/install-delano.sh +0 -0
  36. package/install-delano.sh +0 -0
  37. package/package.json +10 -2
  38. package/src/cli/commands/install.js +21 -1
  39. package/src/cli/lib/install.js +389 -8
@@ -1,24 +1,24 @@
1
- <?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
2
- <svg width="800px" height="800px" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
3
- <path d="M21.0016 3.11679C21.0016 2.23783 20.0175 2.23782 19.5801 2.34769C20.1924 1.86426 20.9105 1.98147 21.1656 2.12796L27.079 5.02747C27.6424 5.30375 27.9998 5.8786 27.9998 6.50857V25.5831C27.9998 26.2215 27.6329 26.8025 27.058 27.0743L21.4937 29.7054C21.1109 29.8701 20.2799 30.2767 19.5801 29.7053C20.4549 29.8702 20.9287 29.2476 21.0016 28.8264V3.11679Z" fill="url(#paint0_linear_87_8101)"/>
4
- <path d="M19.6512 2.3319C20.1154 2.24017 21.0018 2.28271 21.0018 3.11685V9.68254L3.07359 23.2453C2.76022 23.4824 2.3192 23.443 2.05229 23.1542L0.204532 21.1548C-0.0849358 20.8416 -0.0646824 20.3513 0.249624 20.0633L19.5802 2.34775L19.6512 2.3319Z" fill="url(#paint1_linear_87_8101)"/>
5
- <path d="M21.0018 22.3708L3.07359 8.80801C2.76022 8.57094 2.3192 8.61028 2.05229 8.8991L0.204532 10.8985C-0.0849358 11.2117 -0.0646824 11.702 0.249624 11.9901L19.5802 29.7056C20.455 29.8704 20.9289 29.2478 21.0018 28.8266V22.3708Z" fill="url(#paint2_linear_87_8101)"/>
6
- <defs>
7
- <linearGradient id="paint0_linear_87_8101" x1="23.79" y1="2" x2="23.79" y2="30" gradientUnits="userSpaceOnUse">
8
- <stop stop-color="#32B5F1"/>
9
- <stop offset="1" stop-color="#2B9FED"/>
10
- </linearGradient>
11
- <linearGradient id="paint1_linear_87_8101" x1="21.0018" y1="5.53398" x2="1.0217" y2="22.3051" gradientUnits="userSpaceOnUse">
12
- <stop stop-color="#0F6FB3"/>
13
- <stop offset="0.270551" stop-color="#1279B7"/>
14
- <stop offset="0.421376" stop-color="#1176B5"/>
15
- <stop offset="0.618197" stop-color="#0E69AC"/>
16
- <stop offset="0.855344" stop-color="#0F70AF"/>
17
- <stop offset="1" stop-color="#0F6DAD"/>
18
- </linearGradient>
19
- <linearGradient id="paint2_linear_87_8101" x1="1.15522" y1="9.98389" x2="21.0791" y2="26.4808" gradientUnits="userSpaceOnUse">
20
- <stop stop-color="#1791D2"/>
21
- <stop offset="1" stop-color="#1173C5"/>
22
- </linearGradient>
23
- </defs>
1
+ <?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
2
+ <svg width="800px" height="800px" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
3
+ <path d="M21.0016 3.11679C21.0016 2.23783 20.0175 2.23782 19.5801 2.34769C20.1924 1.86426 20.9105 1.98147 21.1656 2.12796L27.079 5.02747C27.6424 5.30375 27.9998 5.8786 27.9998 6.50857V25.5831C27.9998 26.2215 27.6329 26.8025 27.058 27.0743L21.4937 29.7054C21.1109 29.8701 20.2799 30.2767 19.5801 29.7053C20.4549 29.8702 20.9287 29.2476 21.0016 28.8264V3.11679Z" fill="url(#paint0_linear_87_8101)"/>
4
+ <path d="M19.6512 2.3319C20.1154 2.24017 21.0018 2.28271 21.0018 3.11685V9.68254L3.07359 23.2453C2.76022 23.4824 2.3192 23.443 2.05229 23.1542L0.204532 21.1548C-0.0849358 20.8416 -0.0646824 20.3513 0.249624 20.0633L19.5802 2.34775L19.6512 2.3319Z" fill="url(#paint1_linear_87_8101)"/>
5
+ <path d="M21.0018 22.3708L3.07359 8.80801C2.76022 8.57094 2.3192 8.61028 2.05229 8.8991L0.204532 10.8985C-0.0849358 11.2117 -0.0646824 11.702 0.249624 11.9901L19.5802 29.7056C20.455 29.8704 20.9289 29.2478 21.0018 28.8266V22.3708Z" fill="url(#paint2_linear_87_8101)"/>
6
+ <defs>
7
+ <linearGradient id="paint0_linear_87_8101" x1="23.79" y1="2" x2="23.79" y2="30" gradientUnits="userSpaceOnUse">
8
+ <stop stop-color="#32B5F1"/>
9
+ <stop offset="1" stop-color="#2B9FED"/>
10
+ </linearGradient>
11
+ <linearGradient id="paint1_linear_87_8101" x1="21.0018" y1="5.53398" x2="1.0217" y2="22.3051" gradientUnits="userSpaceOnUse">
12
+ <stop stop-color="#0F6FB3"/>
13
+ <stop offset="0.270551" stop-color="#1279B7"/>
14
+ <stop offset="0.421376" stop-color="#1176B5"/>
15
+ <stop offset="0.618197" stop-color="#0E69AC"/>
16
+ <stop offset="0.855344" stop-color="#0F70AF"/>
17
+ <stop offset="1" stop-color="#0F6DAD"/>
18
+ </linearGradient>
19
+ <linearGradient id="paint2_linear_87_8101" x1="1.15522" y1="9.98389" x2="21.0791" y2="26.4808" gradientUnits="userSpaceOnUse">
20
+ <stop stop-color="#1791D2"/>
21
+ <stop offset="1" stop-color="#1173C5"/>
22
+ </linearGradient>
23
+ </defs>
24
24
  </svg>
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Bart van der Meeren
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -15,9 +15,19 @@ The npm package is intentionally thin. It distributes the approved runtime paylo
15
15
  ## Delano CLI
16
16
 
17
17
  - Package: `@bvdm/delano`
18
+ - Current package version: `0.2.2`
18
19
  - Binary: `delano`
19
20
  - Commands: `onboarding`, `install`, `viewer`, `init`, `validate`, `status`, `next`
20
- - Primary v1.1 goal: bootstrap a repo safely, then stay out of the way
21
+ - Primary goal: bootstrap a repo safely, expose local delivery state clearly, and keep runtime gates verifiable
22
+
23
+ ## Recent main changes
24
+
25
+ The latest main merges moved Delano beyond a thin install wrapper:
26
+
27
+ - PR #4, `feat/delano-vnext-runtime-upgrade`, merged on 2026-05-04. This added the v0.2 runtime layer: schema-backed `.project` artifact validation, operating-mode and status-transition checks, evidence mapping, strict validation fixtures, privacy-safe logging defaults, package/payload drift checks, dry-run sync inspection, apply-gated repair planning, lease-based multi-agent coordination, worktree health checks, delivery metrics, context audits, skill-output eval fixtures, and compact root/adapter agent instructions.
28
+ - PR #3, `delano-viewer-design-overhaul`, merged on 2026-04-29. This added the packaged read-only Delano viewer under `.delano/viewer`, including the local Node server, static UI, `.project` indexing APIs, project outlines, workstream/task navigation, rendered markdown, context-aware filters, guarded open actions, and visual/browser smoke evidence.
29
+
30
+ The current runtime still treats `HANDBOOK.md` and `.project/` as the source of truth. The new pieces make that model easier to inspect and harder to bypass accidentally.
21
31
 
22
32
  ## One-command bootstrap
23
33
 
@@ -123,11 +133,11 @@ bash .agents/scripts/pm/status.sh
123
133
  bash .agents/scripts/pm/next.sh --all
124
134
  ```
125
135
 
126
- The viewer is packaged with `@bvdm/delano` and serves the selected repository's `.project` files read-only. It defaults to `http://127.0.0.1:3977`; set `DELANO_VIEWER_PORT` or `PORT` to use another port.
136
+ The viewer is packaged with `@bvdm/delano` and serves the selected repository's `.project` files read-only. It defaults to `http://127.0.0.1:3977`; set `DELANO_VIEWER_PORT` or `PORT` to use another port. It indexes `.project/context`, `.project/templates`, and `.project/projects`, then derives artifact roles, statuses, project outlines, task/workstream relationships, snippets, and rendered markdown for local inspection.
127
137
 
128
138
  ## Required dependencies
129
139
 
130
- Delano v1.1 assumes these tools are available:
140
+ Delano assumes these tools are available:
131
141
 
132
142
  - `node` 18 or newer
133
143
  - `bash`
@@ -144,6 +154,7 @@ The CLI does not bundle its own shell or Python runtime.
144
154
  - it aborts if an approved target path already exists
145
155
  - it reports each conflict as file, directory, or symlink
146
156
  - it only overwrites approved allowlist paths when `--force` is used
157
+ - it can narrow updates with `--only`, `--exclude`, `--no-project-context`, and `--no-project-state`
147
158
  - it does not touch unrelated files outside the allowlist
148
159
  - it does not install or overwrite repo-root Git config files such as `.gitignore` or `.gitattributes`
149
160
 
@@ -152,6 +163,19 @@ The base install payload includes `.delano/`, including the read-only viewer UI.
152
163
  The installable `.project/context/` pack is seeded from generic templates during packaging; it does not ship Delano's own repo-specific context files into consumer repositories.
153
164
  After install, the recommended first step is `delano onboarding`, which requires explicit approval before it reviews `AGENTS.md`.
154
165
 
166
+ For an update-safe refresh that avoids repo-owned project state, narrow the plan before forcing overwrites:
167
+
168
+ ```bash
169
+ delano install --interactive
170
+ delano install --only skills,project-templates --force --yes
171
+ delano install --exclude project-context,project-projects,project-registry --force --yes
172
+ delano install --no-project-state --force --yes
173
+ ```
174
+
175
+ The interactive installer presents presets for updating the runtime while preserving project state, updating only skills and project templates, full install or repair, and custom category selection.
176
+
177
+ Install categories are `agent-runtime`, `skills`, `viewer`, `project-context`, `project-templates`, `project-registry`, `project-projects`, `handbook`, and `legacy-installer`. The `--no-project-state` shortcut excludes `.project/context`, `.project/projects`, and `.project/registry`.
178
+
155
179
  ## Optional AGENTS.md / CLAUDE.md snippet
156
180
 
157
181
  If you want explicit Delano instructions in a repo-root `AGENTS.md` or `CLAUDE.md`, copy and paste this yourself:
@@ -174,16 +198,38 @@ When working in this repository:
174
198
  - use `delano viewer` to inspect `.project/` through the read-only local UI
175
199
  ```
176
200
 
177
- ## v1.1 boundaries
201
+ ## Runtime boundaries
178
202
 
179
203
  This package is deliberately narrow:
180
204
 
181
205
  - npm is the distribution surface
182
206
  - `.project` remains repo-owned after install
183
207
  - `.project/context/` installs as generic starter context that the target repo must replace with its own reality
208
+ - `.project/projects/` and `.project/registry/` are repo-owned state and should normally be excluded from forced refreshes
184
209
  - `.agents` remains the runtime surface
185
- - wrapper commands stay thin in v1.1
210
+ - wrapper commands stay thin
186
211
  - `install-delano.sh` remains available as the legacy bridge installer
212
+ - remote GitHub/Linear writes remain outside the default flow; current sync tooling is dry-run and repair-plan oriented unless an operator explicitly approves an apply-capable workflow
213
+
214
+ ## Runtime validation
215
+
216
+ The v0.2 runtime upgrade expanded `delano validate` and `bash .agents/scripts/pm/validate.sh` with local gates for:
217
+
218
+ - artifact schemas, artifact scope, operating modes, status transitions, dependencies, blockers, and acceptance/evidence mapping
219
+ - privacy-safe prompt/log defaults and path-output safety
220
+ - package manifest and install payload drift
221
+ - local/GitHub/Linear sync inspection, drift reporting, and apply-gated repair planning
222
+ - lease contracts, conflict zones, stream-aware next-task selection, handoff summaries, and worktree health
223
+ - delivery metrics, project metrics summaries, context audit scoring, skill-output eval fixtures, and closeout learning proposals
224
+
225
+ For release readiness, run:
226
+
227
+ ```bash
228
+ npm run build:assets
229
+ npm run check:package-manifest
230
+ bash .agents/scripts/pm/validate.sh
231
+ npm test
232
+ ```
187
233
 
188
234
  ## Local development
189
235
 
@@ -195,6 +241,23 @@ node bin/delano.js --help
195
241
  node bin/delano.js --yes --target ./tmp/cli-install-smoke
196
242
  ```
197
243
 
244
+ ## Publishing
245
+
246
+ Publishing is handled by the GitHub Actions workflow `.github/workflows/publish-npm.yml`.
247
+
248
+ Before the first Actions publish, configure npm trusted publishing for `@bvdm/delano` with:
249
+
250
+ - Publisher: GitHub Actions
251
+ - Organization or user: `MajesteitBart`
252
+ - Repository: `delano`
253
+ - Workflow filename: `publish-npm.yml`
254
+
255
+ The package metadata must keep `repository.url` set to `https://github.com/MajesteitBart/delano`; npm validates that value against the GitHub Actions provenance bundle.
256
+
257
+ After trusted publishing is configured, publish by pushing a matching version tag such as `v0.2.2`, or run the `Publish package to npm` workflow manually from `main`. The workflow rebuilds the package payload, checks manifest drift, runs tests, dry-runs the package contents, verifies the version is not already published, and then runs `npm publish --access public` from GitHub Actions using OIDC. A manual `dry_run` input is available to run the same checks without publishing.
258
+
259
+ If npm publish fails after the package checks pass, verify that the npm trusted publisher settings match the repository and workflow filename exactly, and that the workflow has `id-token: write`.
260
+
198
261
  ## Read next
199
262
 
200
263
  - `docs/user-guide.md` for the practical user flow
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,3 +1,3 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
3
  <svg width="800px" height="800px" viewBox="0 0 1024 1024" class="icon" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M853.333333 256H469.333333l-85.333333-85.333333H170.666667c-46.933333 0-85.333333 38.4-85.333334 85.333333v170.666667h853.333334v-85.333334c0-46.933333-38.4-85.333333-85.333334-85.333333z" fill="#FFA000" /><path d="M853.333333 256H170.666667c-46.933333 0-85.333333 38.4-85.333334 85.333333v426.666667c0 46.933333 38.4 85.333333 85.333334 85.333333h682.666666c46.933333 0 85.333333-38.4 85.333334-85.333333V341.333333c0-46.933333-38.4-85.333333-85.333334-85.333333z" fill="#FFCA28" /></svg>
@@ -1,21 +1,21 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1" />
6
- <title>Delano Viewer</title>
7
- <link rel="preconnect" href="https://fonts.googleapis.com" crossorigin />
8
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
9
- <link
10
- rel="stylesheet"
11
- href="https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,400;0,6..72,500;0,6..72,600;1,6..72,400&family=Instrument+Serif:ital@0;1&display=swap"
12
- />
13
- <link rel="stylesheet" href="/styles.css" />
14
- </head>
15
- <body>
16
- <div class="ambient" aria-hidden="true"></div>
17
- <div id="app">Loading Delano viewer...</div>
18
- <div id="copy-live" class="visually-hidden" aria-live="polite" aria-atomic="true"></div>
19
- <script src="/app.js"></script>
20
- </body>
21
- </html>
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>Delano Viewer</title>
7
+ <link rel="preconnect" href="https://fonts.googleapis.com" crossorigin />
8
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
9
+ <link
10
+ rel="stylesheet"
11
+ href="https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,400;0,6..72,500;0,6..72,600;1,6..72,400&family=Instrument+Serif:ital@0;1&display=swap"
12
+ />
13
+ <link rel="stylesheet" href="/styles.css" />
14
+ </head>
15
+ <body>
16
+ <div class="ambient" aria-hidden="true"></div>
17
+ <div id="app">Loading Delano viewer...</div>
18
+ <div id="copy-live" class="visually-hidden" aria-live="polite" aria-atomic="true"></div>
19
+ <script src="/app.js"></script>
20
+ </body>
21
+ </html>
@@ -1,6 +1,6 @@
1
- <?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
2
- <svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
3
- <title>markdown</title>
4
- <rect width="24" height="24" fill="none"/>
5
- <path d="M2,16V8H4l3,3,3-3h2v8H10V10.83l-3,3-3-3V16H2M16,8h3v4h2.5l-4,4.5-4-4.5H16Z"/>
1
+ <?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
2
+ <svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
3
+ <title>markdown</title>
4
+ <rect width="24" height="24" fill="none"/>
5
+ <path d="M2,16V8H4l3,3,3-3h2v8H10V10.83l-3,3-3-3V16H2M16,8h3v4h2.5l-4,4.5-4-4.5H16Z"/>
6
6
  </svg>