@starlein/paperclip-plugin-company-wizard 0.3.22 → 0.3.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +554 -0
- package/CONTRIBUTING.md +90 -0
- package/dist/manifest.js +1 -1
- package/dist/manifest.js.map +1 -1
- package/package.json +4 -2
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,554 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to the Company Wizard plugin are documented here.
|
|
4
|
+
|
|
5
|
+
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
## [0.3.23] - 2026-06-10
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- **`CHANGELOG.md` and `CONTRIBUTING.md` are now included in the published npm package** (added to the `files` allowlist). Previously only `dist/`, `templates/`, plus the npm defaults (`README.md`, `LICENSE`, `package.json`) shipped, so the changelog and contributor guide were missing from the tarball.
|
|
13
|
+
|
|
14
|
+
## [0.3.22] - 2026-06-10
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- **Wizard-created routines are now linked to the main project.** The wizard creates routines with board authority at provisioning time, but it created them without a `projectId`. Projects are created later by the CEO during bootstrap, and the CEO can only edit routines assigned to itself — so routines owned by other agents (e.g. the Product Owner) stayed project-less forever. The worker now pre-creates the main project before the routines and passes its id to every `createRoutine`; `BOOTSTRAP.md` marks the main project as already created (gated on there being routines) so the CEO links goals/issues to it instead of recreating it. Best-effort — if project creation fails, routines are still created (project-less) rather than blocking provisioning. (`worker.ts`, `assemble.js`.)
|
|
19
|
+
- **PR bodies and review comments now render as Markdown.** Agents posted GitHub PR bodies and review comments with inline `gh pr … --body "<inline>"`. A double-quoted shell argument does not turn `\n` into a real newline, so multi-line Markdown rendered on GitHub as literal `text\ntext\ntext`. All PR-review guidance (engineer `pr-workflow`, the six reviewer skills, the `code-reviewer` role, and `pr-conventions.md`) now writes the Markdown to a file and uses `--body-file`, with a verdict-heading comment template (`## ✅ Approved` / `## 🔄 Changes requested`).
|
|
20
|
+
|
|
21
|
+
## [0.3.21] - 2026-06-10
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
|
|
25
|
+
- **Deferred-isolation guidance for fresh local repos.** When the instance has isolated worktrees enabled but a project starts as a fresh local repository, the isolated `executionWorkspacePolicy` is (correctly) omitted at provisioning — worktrees need an existing base ref and would fail on the first run. Previously this left the operator thinking the setting did nothing, so they flipped it by hand mid-run and stranded early work in the shared workspace. The project's BOOTSTRAP block now renders an explicit note: as the final step of "Prepare GitHub repository", once the initial commit is on `main`, switch the project to isolated worktrees (Project settings → isolated workspaces, or set `executionWorkspacePolicy` to `isolated_workspace`/`git_worktree` with `baseRef: main`). Rendered by `renderDeferredIsolationNote` in `assemble.js`; only appears when isolation is enabled and the repo is fresh-local.
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
|
|
29
|
+
- **PR merge gate — approved PRs now actually get merged.** The `pr-review` execution-policy chain previously ended with the **Product Owner**'s `approval` stage. Because clearing the final stage auto-closes the issue to `done`, the Product Owner (not the engineer) was the last actor, so the engineer was never woken to merge — approved, mergeable PRs stayed open on GitHub while their issues showed `done`. The chain now ends with a final `approval` stage owned by the **Engineer** (the merge gate): the engineer is woken last, merges the PR, then records the verdict that closes the issue. Adds a `mergeGate` field to the `pr-review` `reviewGate`, renders the merge-gate stage in the BOOTSTRAP `executionPolicy` sketch (`resolveReviewGate`/`renderReviewGate` in `assemble.js`), and updates the engineer `pr-workflow` skill, `pr-conventions.md`, and the bootstrap PR-review guardrail.
|
|
30
|
+
- **Repository setup now ignores `.paperclip/`.** The `Prepare GitHub repository` foundation issue and `docs/git-workflow.md` now instruct adding a `.paperclip/` entry to `.gitignore` before the first commit (creating `.gitignore` if missing). Paperclip keeps per-issue git worktrees and workspace metadata under `.paperclip/` inside the repo; without the ignore, that transient state can be committed and isolated worktrees can nest inside the repo, producing confusing git state for every agent.
|
|
31
|
+
|
|
32
|
+
## [0.3.20] - 2026-06-09
|
|
33
|
+
|
|
34
|
+
### Added
|
|
35
|
+
|
|
36
|
+
- **Opt-in agent persona enrichment** (`enableEnrichedPersonas` plugin setting, default `false`). When enabled, assembly appends enrichment fragments into generated agent files; the lean baseline is unchanged when off.
|
|
37
|
+
- **Domain lenses** (`roles/<role>/LENSES.md` → `SOUL.md`) — named mental models an agent cites in comments. Lens-heavy: `security-engineer` (STRIDE, OWASP Web/API/LLM, least privilege, blast radius…), `ux-researcher` (Nielsen's 10, Jakob's/Hick's/Fitts's Law, Kano, JTBD…), `ui-designer` (Gestalt, visual hierarchy, design tokens…). Focused: `product-owner` (RICE/ICE, MoSCoW, WSJF…), `code-reviewer` (correctness-first, blast radius, smallest-diff…), `devops` (error budgets, MTTR, rollback-first…). Operational roles (`engineer`, `qa`) intentionally have none.
|
|
38
|
+
- **Output/review bars** (`modules/<module>/skills/<skill>.bar.md` → primary skill) — concrete "what good/finished work looks like" with negative examples, across 14 module skills (tech-stack, architecture-plan, design-system, api-design, codebase-audit, user-testing, accessibility-audit, threat-model, security-review, market-analysis, brand-identity, backlog-health, ci-cd, monitoring).
|
|
39
|
+
- **Done-criteria** (`roles/<role>/DONE.md` → `HEARTBEAT.md`) — explicit "verify before done" + "always comment before exiting a heartbeat" rule, for all 8 enriched roles.
|
|
40
|
+
- Enrichment fragments are filtered from every copy path (`isEnrichmentFragment`) so they never ship as standalone files; injection mirrors the existing module heartbeat-section pattern and is threaded `manifest.ts → worker.ts → assembleCompany`.
|
|
41
|
+
|
|
42
|
+
## [0.3.19] - 2026-06-09
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
|
|
46
|
+
- **Rebranded all leftover "Clipper" references to "Company Wizard"** — AI wizard prompts (`interview-system.md`, `single-shot-system.md` in both `templates/ai-wizard/` and `src/ui/prompts/`), module doc footers (`_Generated by Company Wizard._`), the `template-check-use-case` command, CONTRIBUTING clone instructions, and internal identifiers (`company-wizard-preview-` temp dir, `.company-wizard-plugin-root` CSS class, `sync-plugin.sh` `PLUGIN_DIR`, the `resolveRole` parameter, and the plugin test suite name).
|
|
47
|
+
- **Authorship and license updated** — copyright assigned to Sascha Pietrowski; Yesterday AI credited in `LICENSE`, `package.json` contributors, and the README fork note for the original `@yesterday-ai/paperclip-plugin-company-wizard` (template system, assembly logic, API client).
|
|
48
|
+
|
|
49
|
+
### Fixed
|
|
50
|
+
|
|
51
|
+
- **README role documentation corrected** — only the CEO is a base role (the "How It Works" assembly step no longer claims Engineer is base); the Software Engineer role was added to the roles table and details (now 16 optional roles, matching `CLAUDE.md`/`AGENTS.md` and the template library); the orphaned CFO role-detail block was removed.
|
|
52
|
+
- **`pnpm-workspace.yaml` supply-chain excludes corrected** — `minimumReleaseAgeExclude` referenced non-existent `@starlein/*` packages instead of the real `@paperclipai/plugin-sdk` and `@paperclipai/shared` dependencies.
|
|
53
|
+
|
|
54
|
+
### Added
|
|
55
|
+
|
|
56
|
+
- **README "Why Company Wizard?" highlights** — a concise feature summary near the top of the README.
|
|
57
|
+
- **ROADMAP refreshed** — post-fork plugin-migration work moved to Done; new backlog items for re-provisioning, dry-run preview, per-role model tuning, and a routine pattern library.
|
|
58
|
+
|
|
59
|
+
### Removed
|
|
60
|
+
|
|
61
|
+
- Stale `docs/superpowers/` planning artifacts (pr-review-execution-policy plan + spec, already merged).
|
|
62
|
+
|
|
63
|
+
## [0.3.18] - 2026-06-09
|
|
64
|
+
|
|
65
|
+
### Fixed
|
|
66
|
+
|
|
67
|
+
- **Removed optional provisioning telemetry support.**
|
|
68
|
+
- **Repository bootstrap wording for existing repos is now accurate** — the github-repo foundation task is now `Prepare GitHub repository` and explicitly distinguishes fresh-repository setup from verification of an existing repository state.
|
|
69
|
+
- **Isolated-worktree execution policy now normalizes `baseRef` consistently** (`main` → `origin/main`) and keeps local fresh repository setups on shared workspaces until the repo exists.
|
|
70
|
+
|
|
71
|
+
## [0.3.15] - 2026-06-08
|
|
72
|
+
|
|
73
|
+
### Fixed
|
|
74
|
+
|
|
75
|
+
- **PR review bootstrap issue is now a foundation task.** `Set up Paperclip PR review workflow` is explicitly marked as `bootstrapPhase: "foundation"` so it no longer gets scheduled after generic module tasks in the backlog.
|
|
76
|
+
- **Regression coverage added for bootstrap issue ordering.** Added an integration assertion so PR review setup remains ahead of backlog work when both setup tasks are present.
|
|
77
|
+
|
|
78
|
+
## [0.3.14] - 2026-06-08
|
|
79
|
+
|
|
80
|
+
### Fixed
|
|
81
|
+
|
|
82
|
+
- **Review-step repository edits now fully replace source mode metadata.** The summary/review editor now writes a canonical `workspaceSourceType` (`git_repo` or `local_path`) alongside `workspace`, preventing stale legacy `workspaceSourceType` values from blocking mode switches between new and existing repos.
|
|
83
|
+
|
|
84
|
+
## [0.3.13] - 2026-06-08
|
|
85
|
+
|
|
86
|
+
### Fixed
|
|
87
|
+
|
|
88
|
+
- **Review-step repository editing now stays in sync.** The summary/review repository editor now handles legacy `workspaceSourceType` values consistently, so editing fresh-vs-existing repository settings in the Review step keeps the rendered preview aligned and always uses the selected mode during provisioning.
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
## [0.3.12] - 2026-06-08
|
|
92
|
+
|
|
93
|
+
### Changed
|
|
94
|
+
|
|
95
|
+
- **Workspace isolation is now read from Paperclip instance settings** — the plugin no longer exposes an `enableIsolatedWorktrees` plugin option. `executionWorkspacePolicy` for `git_repo` projects now follows `enableIsolatedWorkspaces` from Paperclip instance experimental settings (`/api/instance/settings/experimental`). Fresh local repos continue to skip isolated worktrees during bootstrap.
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
## [0.3.11] - 2026-06-08
|
|
99
|
+
|
|
100
|
+
### Fixed
|
|
101
|
+
|
|
102
|
+
- **CEO bootstrap no longer reverse-engineers the Paperclip API from server source.** During bootstrap the CEO was reading/grepping `server/src/routes/*` and `packages/shared/src/validators/*` to recover exact create-payload schemas, because BOOTSTRAP.md listed *what* to create but not the create endpoints or valid enum values for goals and projects. The first create pass then failed on a project status enum (`active` is a goal status, not a project status). `templates/bootstrap-instructions.md` now documents the `POST /api/companies/{companyId}/goals` and `…/projects` endpoints, the valid `level`/`status` enums for goals and projects (explicitly noting `active` is goal-only), and instructs the agent not to inspect server source to recover schemas. Also reiterates that fresh local repos must not attach an `executionWorkspacePolicy`.
|
|
103
|
+
|
|
104
|
+
### Changed
|
|
105
|
+
|
|
106
|
+
- **Repository setting on the review/summary step is now an obvious clickable control.** Previously the only way to edit it was a hover-only pencil icon shared by every row, which was hard to discover. The repository value is now a button with a visible "Change" / "Change — use an existing repository" affordance that opens the inline new-vs-existing editor (both manual and AI paths).
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
## [0.3.10] - 2026-06-08
|
|
110
|
+
|
|
111
|
+
### Fixed
|
|
112
|
+
|
|
113
|
+
- **Fresh local repositories no longer bootstrap with isolated git worktrees.** The wizard was provisioning `executionWorkspacePolicy: { defaultMode: "isolated_workspace", workspaceStrategy: { type: "git_worktree", baseRef: "main" } }` on brand-new `local_path` projects. Worker agents then tried to create a worktree off `main` before the repo (and its base ref) existed, so every early run failed and agents flipped to `error`. The isolated policy is now suppressed for fresh local repos — agents work in the shared project workspace during bootstrap — while existing external repos (`sourceType: "git_repo"`) keep the isolated `git_worktree` policy. Guarded centrally in `assemble.js` (so both manual and AI-generated configs are covered) and removed at the source in `StepRepository` and the AI wizard prompts (`messages.json`, `single-shot-system.md`).
|
|
114
|
+
- **Spurious React "unique key" warnings in the plugin UI.** The UI bundle was compiled against the production JSX runtime (`react/jsx-runtime`), but the Paperclip host loads a development build of react-dom, which then warned about missing keys for every component returning multiple static children (`PathCard`, `StepOnboarding`, `ConfigReview`). The UI now builds with the development JSX runtime (`jsxDEV`) by default so elements carry the static-children flag; published packages still use the production runtime via `pnpm build:prod` / `prepublishOnly`.
|
|
115
|
+
|
|
116
|
+
### Added
|
|
117
|
+
|
|
118
|
+
- **Inline repository editor on the review/summary step** (`ConfigReview`). The Repository row is now editable in both the manual and AI paths: toggle between "New repository" (initial branch) and "Existing repository" (repo URL + default ref). Selecting an existing repository opens a URL field and applies the external-repo workspace + isolated `git_worktree` policy; switching back to a new repository clears it.
|
|
119
|
+
|
|
120
|
+
### Changed
|
|
121
|
+
|
|
122
|
+
- **Repository setup logic extracted to `src/ui/lib/repository.ts`** (`repositoryProjectFields`, `getRepositoryMode`, `getRepositoryRef`, `getRepositoryUrl`, `normalizeNewRepoBranch`) and shared by `StepRepository` and the new inline editor, so the new-vs-external workspace + execution-policy rules stay consistent across both entry points.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
## [0.3.9] - 2026-06-08
|
|
126
|
+
|
|
127
|
+
### Changed
|
|
128
|
+
|
|
129
|
+
- **PR reviews now use the issue's native `executionPolicy` instead of separate child review issues.** The Engineer sets an ordered stage chain on the originating issue — a `review` stage for the Code Reviewer, optional `review` stages for relevant domain reviewers (UI/UX/QA/DevOps), and a final `approval` stage for the Product Owner — and merges once all stages clear. Reviewer skills record `approved` / `changes_requested` on their stage (the verdict-submit path is agent-runtime logic, so the skills stay mechanism-neutral). This surfaces reviewer/approver in the native UI and removes 2–6 review issues per PR. Touches the `pr-review` engineer + six reviewer skills, `pr-conventions.md`, the module metadata, and the BOOTSTRAP guardrail.
|
|
130
|
+
|
|
131
|
+
### Added
|
|
132
|
+
|
|
133
|
+
- **`reviewGate` field on declared module/preset issues** (`{ reviewers: [...], approver: "..." }`). Assembly resolves the roles present in the team (dropping absent ones) and renders an ordered executionPolicy sketch into BOOTSTRAP.md; the CEO resolves roles → agentIds when creating the issue. `client.createIssue` already forwards `executionPolicy`, so no client change was needed. The `pr-review` setup issue ships a `reviewGate` as the first real example.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
## [0.3.8] - 2026-06-08
|
|
137
|
+
|
|
138
|
+
### Changed
|
|
139
|
+
|
|
140
|
+
- **`anthropicApiKey` and `paperclipPassword` plugin settings are now plain string fields** instead of `secret-ref`. The Paperclip host rejects saving any `secret-ref` field until company-scoped plugin config ships (error: "Plugin secret references are disabled until company-scoped plugin config lands"), which blocked saving the plugin settings entirely. `resolveAnthropicApiKey` now uses a directly entered key (`sk-ant-...`) as-is and only falls back to host secret resolution for legacy installs that still store a secret reference. Trade-off: the Anthropic key is now stored in plain plugin config until the host secret store is available.
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
## [0.3.7] - 2026-06-08
|
|
144
|
+
|
|
145
|
+
### Fixed
|
|
146
|
+
|
|
147
|
+
- **Agent filter bug in the `auto-assign` module.** Corrected the agent-matching filter used in the CEO/Product Owner heartbeat sections and the primary + fallback `auto-assign` skills.
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
## [0.3.6] - 2026-06-07
|
|
151
|
+
|
|
152
|
+
### Fixed
|
|
153
|
+
|
|
154
|
+
- **Bootstrap ordering hardened** in `assemble.js`, with added integration coverage.
|
|
155
|
+
- **PR review workflow tightened.** Review skills across all reviewing roles (code reviewer, devops, engineer, product owner, QA, UI designer, UX researcher) and the `pr-conventions` doc were updated for consistent, role-appropriate review scope; `github-repo` and `pr-review` module metadata adjusted.
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
## [0.3.5] - 2026-06-07
|
|
159
|
+
|
|
160
|
+
### Changed
|
|
161
|
+
|
|
162
|
+
- **Worker agents no longer run always-on heartbeats.** Since the plugin now provisions the whole team (0.3.2) plus all routines (0.3.4), enabling a heartbeat on every agent produced a burst of concurrent and queued runs that overloaded the dev server (frequent crashes/restarts, cascading `process_lost` failures). Paperclip wakes an agent when work is assigned to it, and routines drive scheduled work, so only the CEO (coordinator) keeps an always-on heartbeat; all other agents are now created with the heartbeat disabled and woken on assignment. This sharply reduces baseline concurrency.
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
## [0.3.4] - 2026-06-07
|
|
166
|
+
|
|
167
|
+
### Fixed
|
|
168
|
+
|
|
169
|
+
- **Bootstrap no longer blocks on routine creation.** Paperclip only lets an agent create routines assigned to itself, so the CEO following the bootstrap could not create routines owned by other agents (backlog grooming and auto-assign belong to the Product Owner) — it had to delegate them to a separate issue and block the bootstrap. The plugin now creates all routines directly during provisioning (with board authority, each assigned to its owning agent, with cron triggers), the same way it already creates the agents. BOOTSTRAP.md tells the CEO the routines already exist. New companies only; existing-company runs leave routines untouched.
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
## [0.3.3] - 2026-06-07
|
|
173
|
+
|
|
174
|
+
### Changed
|
|
175
|
+
|
|
176
|
+
- **Shared docs are now scoped per role.** Each agent's AGENTS.md previously listed every doc in `docs/`, so e.g. a Code Reviewer was told to read the marketing and vision templates. Docs are now referenced only by the roles of the module that ships them (the CEO, as coordinator, still sees all); a module with no role association stays company-wide.
|
|
177
|
+
- **Doc references use relative paths.** They were absolute paths that baked in the (possibly collision-suffixed) company directory name; they are now `docs/<file>` relative to the agent home, which stays valid if the company directory is renamed.
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
## [0.3.2] - 2026-06-07
|
|
181
|
+
|
|
182
|
+
### Fixed
|
|
183
|
+
|
|
184
|
+
- **Agents are created with complete instructions.** The plugin now provisions the entire team directly — every non-CEO agent (engineer, code reviewer, etc.) is created with its full `instructionsBundle` (AGENTS.md + HEARTBEAT/SOUL/TOOLS + skills), the same proven path already used for the CEO. Previously the CEO created these agents during bootstrap with only an `instructionsFilePath`, so the host materialized a bundle from a single entry file and each agent ended up with a bare AGENTS.md that referenced its real skills/docs via fragile external absolute paths. BOOTSTRAP.md now tells the CEO the agents already exist (reuse by `metadata.templateRole`, do not duplicate).
|
|
185
|
+
- **Isolated workspaces no longer fail on first run.** Fresh local projects used `setupCommand: "git init -b main"`, which leaves an unborn `main` (no commits); the `isolated_workspace` / `git_worktree` policy then failed `git worktree add … main` until an agent happened to make the first commit, so the earliest issues started as "failed" with a workspace error. The default now seeds an initial empty commit (`git init -b main && git … commit --allow-empty …`) so `main` is a valid base ref immediately. A real custom `setupCommand` is left untouched; a missing one is seeded.
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
## [0.3.1] - 2026-06-07
|
|
189
|
+
|
|
190
|
+
### Added
|
|
191
|
+
|
|
192
|
+
- **Domain-specific initial issues.** The AI wizard now generates an `issues` array of concrete, project-specific first work items taken straight from the brief. These lead the bootstrap backlog ahead of the generic preset/module setup issues, so the project starts rolling in its actual domain instead of only doing generic scaffolding. Plumbed end-to-end (prompt → wizard state → assembly → BOOTSTRAP.md) with assignee resolution (falls back to CEO when the target role is absent) and deduplication against module issues.
|
|
193
|
+
|
|
194
|
+
### Changed
|
|
195
|
+
|
|
196
|
+
- AI wizard config generation now uses Claude Opus (`claude-opus-4-8`), with `max_tokens` raised to 32768 so a full-spec config is never truncated mid-JSON.
|
|
197
|
+
- `sync-plugin.sh` now also syncs the `~/.paperclip/plugin-templates` cache. The worker resolves templates from that cache first, so a stale cache silently masked every local template change; the sync script keeps it current.
|
|
198
|
+
|
|
199
|
+
### Fixed
|
|
200
|
+
|
|
201
|
+
- AI wizard config generation no longer fails with `RPC call "performAction" timed out after 30000ms`. All Anthropic calls run as background jobs in the worker (start + poll), so no single `performAction` RPC blocks past the host's hard 30s timeout — even for long Opus generations.
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
## [0.3.0] - 2026-06-06
|
|
205
|
+
|
|
206
|
+
### Fixed
|
|
207
|
+
|
|
208
|
+
- Secret reference handling for plugin settings now works with the current Paperclip host secret flow.
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
## [0.2.7] — 2026-06-06
|
|
212
|
+
|
|
213
|
+
### Added
|
|
214
|
+
|
|
215
|
+
- Two new `game-design` capabilities: `level-design` (owners: level-designer → game-designer → engineer) and `audio-design` (owners: audio-designer → game-designer → engineer), each with a shared primary skill and role fallback — so the Level Designer and Audio Designer roles now own real module work instead of shipping empty.
|
|
216
|
+
- `level-designer` added to the `build-game` preset; its "Design all levels and progression" issue reassigned to the specialist.
|
|
217
|
+
- Preset coverage: `monitoring` added to `secure` and `full`; `user-testing` added to `gtm`, `content`, and `launch-pack`; `devops` role added to `repo-maintenance`, `qa` to `quality`, `ux-researcher` to `gtm` and `content`. Every module and role is now referenced by at least one preset.
|
|
218
|
+
- `src/logic/load-templates.d.ts` — type declarations for the plain-JS loader (restores a clean `tsc --noEmit`).
|
|
219
|
+
- Tests: `loadModules` description-precedence cases and an integration test asserting all `$AGENT_HOME` references resolve to absolute paths.
|
|
220
|
+
|
|
221
|
+
### Changed
|
|
222
|
+
|
|
223
|
+
- **Routines now run every few hours, around the clock** (previously weekly or business-hours only): auto-assign every 2h, stall-detection every 3h, backlog grooming every 4h, CI pipeline health every 6h, broken-link check every 6h. `concurrencyPolicy: skip_if_active` added to the frequent routines (including the `*/15` API health check) so runs never pile up. Periodic audits (dependency/security scan, Core Web Vitals) stay weekly.
|
|
224
|
+
- **Initial backlog**: the `backlog` module's bootstrap issue now seeds an initial backlog of 15-20 actionable issues so the team has immediate, parallelizable work; grooming keeps at least 8 actionable issues ready (was 3).
|
|
225
|
+
- `security-engineer` now maps to the dedicated Paperclip `security` role (was `general`).
|
|
226
|
+
- `@paperclipai/plugin-sdk` and `@paperclipai/shared` are declared as `peerDependencies` with the minimum required version `>=2026.529.0` — the host provides the SDK at runtime (it is externalized from the bundle).
|
|
227
|
+
- `loadModules()` description precedence: `module.meta.json` `description` wins; the README first line is only a fallback (removes a redundant file read).
|
|
228
|
+
- `ux-review` skill now guards its `docs/USER-TESTING.md` reference with an explicit "if exists" condition, matching the other review skills.
|
|
229
|
+
|
|
230
|
+
### Fixed
|
|
231
|
+
|
|
232
|
+
- **Broken agent file links**: skill, shared-doc, and role-file references used `$AGENT_HOME/...` (or relative `docs/...`), but Paperclip sets `AGENT_HOME` to a separate per-agent workspace dir (`<instanceRoot>/workspaces/<agentId>`) that does not contain the provisioned files. Assembly now rewrites every `$AGENT_HOME` reference and the shared-doc references to absolute paths under `companyDir/agents/<role>/` and `companyDir/docs/`, so HEARTBEAT/SOUL/TOOLS/skills/docs resolve regardless of the agent's runtime cwd.
|
|
233
|
+
- **Duplicate bootstrap issues**: a module issue sharing a title with a curated preset issue (e.g. `build-game`'s "Create Game Design Document") was emitted twice. Assembly now de-duplicates issues by title, with the preset issue winning.
|
|
234
|
+
- `tsc --noEmit` failure (TS7016) on the `load-templates.js` import, via the new declaration file.
|
|
235
|
+
|
|
236
|
+
### Removed
|
|
237
|
+
|
|
238
|
+
- `cfo` role — it was orphaned (in no preset, owned no capability, never activated). Documentation and role counts updated. The `cfo` value remains a valid Paperclip `paperclipRole` enum entry.
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
## [0.2.6] — 2026-05-06
|
|
242
|
+
|
|
243
|
+
### Added
|
|
244
|
+
|
|
245
|
+
- **Repository workspace step** — new `StepRepository` wizard step in the manual path lets users choose between creating a fresh local Git repo or connecting an existing external repository (GitHub, GitLab, etc.)
|
|
246
|
+
- `ProjectWorkspaceConfig` and `ProjectExecutionWorkspacePolicy` TypeScript interfaces in `WizardContext`
|
|
247
|
+
- `resolveEffectiveModules()` — expands transitive module `requires` dependencies; ensures the full module graph is activated
|
|
248
|
+
- `collectPresetBootstrapData()` — extracts `issues[]`, `routines[]`, and `labels[]` defined at the preset level so they are included in BOOTSTRAP.md
|
|
249
|
+
- `normalizeProjectWorkspace()` / `renderWorkspaceMetaFields()` / `formatWorkspaceObject()` helpers — flexible rendering of `local_path` and `git_repo` workspace types in BOOTSTRAP.md
|
|
250
|
+
- `executionWorkspacePolicy` support in project metadata (defaultMode, workspaceStrategy with git_worktree)
|
|
251
|
+
- `goalId` field support on issues in BOOTSTRAP.md
|
|
252
|
+
- Repository row in `ConfigReview` summary with edit link back to the repository step
|
|
253
|
+
- `redactSecrets()` pass on all durable bootstrap text — strips tokens, API keys, and common secret patterns before writing
|
|
254
|
+
- Secrets guardrail and PR review workflow guardrail in `templates/bootstrap-instructions.md`
|
|
255
|
+
- `presetIssues`, `presetRoutines`, `presetLabels` params to `assembleCompany()`
|
|
256
|
+
- `explicitBootstrapLabels` pipeline — preset/module-level labels are registered before issue-derived labels
|
|
257
|
+
|
|
258
|
+
### Changed
|
|
259
|
+
|
|
260
|
+
- AI wizard (`StepAiWizard`) now normalizes `workspace` and `executionWorkspacePolicy` from AI-generated project configs
|
|
261
|
+
- All AI prompts (single-shot, interview, config-format, messages) updated to ask about and encode repository setup — fresh local repo vs. external Git repo; never request credentials
|
|
262
|
+
- `start-provision` and `preview-files` worker actions use `resolveEffectiveModules()` and pass preset bootstrap data to assembly
|
|
263
|
+
- `WizardProject` extended with `workspace`, `workspaceSourceType`, `repoUrl`, `repoRef`, `defaultRef`, `executionWorkspacePolicy`
|
|
264
|
+
- `repository` added as a step in the manual wizard flow (`MANUAL_STEPS`)
|
|
265
|
+
- `WizardShell` maps the `repository` step to `StepRepository`
|
|
266
|
+
- `companyDescription` now passed through `escapeBody()` (which includes secret redaction)
|
|
267
|
+
- `buildBootstrapLabels()` accepts explicit labels; existing label names are not overwritten by issue-derived ones
|
|
268
|
+
- `pr-review` module activates an extra BOOTSTRAP.md note about PR review child issues
|
|
269
|
+
- Version bumped to 0.2.6; switched to public npm registry (`--access restricted`)
|
|
270
|
+
CEO default adapter is Codex Local with `gpt-5.5` and high reasoning (`modelReasoningEffort`/`thinkingLevel`).
|
|
271
|
+
|
|
272
|
+
### Fixed
|
|
273
|
+
|
|
274
|
+
- CEO provisioning now sends the role description as Paperclip `capabilities` and mirrors it into agent metadata so newly created CEOs are not saved with empty summaries.
|
|
275
|
+
- CEO default runtime now caps heartbeat concurrency at one run (`maxConcurrentRuns: 1`).
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
## [0.1.16] — 2026-04-22
|
|
280
|
+
|
|
281
|
+
### Added
|
|
282
|
+
|
|
283
|
+
- **Existing-company provisioning** — the wizard can target an existing Paperclip company instead of creating a new one. New `existingCompanyId` state field and `SET_EXISTING_COMPANY_ID` action in `WizardContext`, a "Target" row in `ConfigReview` with inline edit for pasting a company ID, and a summary button label that adapts ("Provision into Existing Company" vs "Create Company")
|
|
284
|
+
- **Approval-aware agent hiring** — `PaperclipClient.createAgent()` now detects when direct creation requires board approval, falls back to `POST /api/companies/{id}/agent-hires`, and auto-approves via `/api/approvals/{id}/approve`. If auto-approve fails, the pending approval ID and error are surfaced in the provisioning log so the board can approve it manually
|
|
285
|
+
- **`disableBoardApprovalOnNewCompanies` plugin setting** (boolean, default `false`) — when enabled, new companies are PATCHed to `requireBoardApprovalForNewAgents=false` during provisioning for legacy fully-autonomous bootstrap behavior. Leave off to preserve approval-gated hiring policies
|
|
286
|
+
- **`PaperclipClient` methods** — `updateCompany`, `getCompany`, `listAgents`, `getAgent` to support existing-company flows
|
|
287
|
+
|
|
288
|
+
### Changed
|
|
289
|
+
|
|
290
|
+
- **CEO resolution for existing companies** — when `existingCompanyId` is set, `start-provision` reuses an active CEO agent if one exists on the company; otherwise it hires a new CEO through the approval-aware path. The bootstrap task title now uses the resolved company name
|
|
291
|
+
- **Partial-failure cleanup** — provisioning only deletes companies that were created in the same run. Existing companies are never deleted on error; the log explicitly notes the skipped cleanup
|
|
292
|
+
- **`StepDone` messaging** adapts to existing-company mode ("Workspace has been assembled and bootstrap tasks were added to the existing Paperclip company")
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
## [0.1.15] — 2026-04-05
|
|
297
|
+
|
|
298
|
+
### Added
|
|
299
|
+
|
|
300
|
+
- **`check-ai-config` worker action** — lightweight pre-check that verifies the Anthropic API key is configured. Called on AI wizard mount to show a warning banner with a link to plugin settings before the user starts typing
|
|
301
|
+
- **API key warning banner** in the AI wizard describe phase — amber alert with "Plugin Settings" button when `anthropicApiKey` is missing
|
|
302
|
+
|
|
303
|
+
### Changed
|
|
304
|
+
|
|
305
|
+
- **Graceful error handling across all worker actions** — `ai-chat`, `start-provision`, `preview-files`, and `refresh-templates` now return `{ error }` instead of throwing. This prevents the plugin host from swallowing error messages in generic 502 responses (fixes [#5](https://github.com/Yesterday-AI/paperclip-plugin-company-wizard/issues/5))
|
|
306
|
+
- **`PaperclipClient.connect()`** — wraps the initial fetch in try/catch to surface network errors (wrong port, connection refused) with actionable messages mentioning `paperclipUrl` in plugin settings
|
|
307
|
+
- **`PaperclipClient._fetch()`** — same network-error handling for all API calls during a session
|
|
308
|
+
- **All error messages** now reference plugin settings fields instead of CLI flags (legacy from the standalone CLI)
|
|
309
|
+
- UI components (`StepProvision`, `ConfigReview`, `StepOnboarding`) updated to handle graceful error returns from worker actions
|
|
310
|
+
|
|
311
|
+
### Fixed
|
|
312
|
+
|
|
313
|
+
- AI wizard 502 error after first step — error messages from the worker (missing API key, Anthropic API errors, network failures) were lost when the plugin host converted thrown errors to generic 502 responses. Now returned as structured data that flows through to the UI error bar
|
|
314
|
+
- "fetch failed" on non-default ports — `PaperclipClient` now catches `TypeError` from `fetch()` and surfaces the configured URL in the error message
|
|
315
|
+
- `start-provision` compensation logic preserved — inner try/catch still deletes partially created companies, outer try/catch returns the error gracefully with full provisioning logs
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
## [0.1.14] — 2026-03-30
|
|
320
|
+
|
|
321
|
+
### Fixed
|
|
322
|
+
|
|
323
|
+
- `ai-chat` action: `max_tokens` reduced from 16384 to 8192 — 16K caused Paperclip's 30s RPC timeout to trigger before Sonnet could finish generating
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## [0.1.13] — 2026-03-30
|
|
328
|
+
|
|
329
|
+
### Changed
|
|
330
|
+
|
|
331
|
+
- CEO agent default model: `claude-opus-4-6` (was: no default, Paperclip fallback)
|
|
332
|
+
- CEO agent heartbeat interval: 3600s / 1 hour (was: Paperclip default 300s / 5 min)
|
|
333
|
+
- `createAgent()` API client now accepts `runtimeConfig` (used for `heartbeat.intervalSec`)
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## [0.1.12] — 2026-03-30
|
|
338
|
+
|
|
339
|
+
### Added
|
|
340
|
+
|
|
341
|
+
- Label creation instructions in bootstrap — CEO creates labels before issues, attaches `labelIds`, maintains labels in heartbeat
|
|
342
|
+
- `assigneeUserId: → board user` for human-assigned issues (was incorrectly using `assigneeAgentId: → "user"`)
|
|
343
|
+
|
|
344
|
+
### Changed
|
|
345
|
+
|
|
346
|
+
- Bootstrap instructions expanded: "How to read the metadata" section explains direct values vs `→` references, documents `assigneeUserId` for board user assignment
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
## [0.1.11] — 2026-03-29
|
|
351
|
+
|
|
352
|
+
### Added
|
|
353
|
+
|
|
354
|
+
- Bootstrap instructions loaded from `templates/bootstrap-instructions.md` — editable without code changes
|
|
355
|
+
|
|
356
|
+
### Changed
|
|
357
|
+
|
|
358
|
+
- BOOTSTRAP.md field names now match Paperclip API exactly: `parentId` (was `parentGoal`), `assigneeAgentId` (was `assignee`), `projectId` (was `project`), `goalIds` (was `goals`)
|
|
359
|
+
- References use `→ "name"` syntax to signal the CEO must resolve names to UUIDs
|
|
360
|
+
- Company description rendered under `## Company` heading
|
|
361
|
+
|
|
362
|
+
### Fixed
|
|
363
|
+
|
|
364
|
+
- BOOTSTRAP.md metadata switched from `<!-- -->` HTML comments to visible `- **key**: value` bullet lists — HTML comments were stripped by Paperclip's markdown renderer
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
## [0.1.9] — 2026-03-29
|
|
369
|
+
|
|
370
|
+
### Added
|
|
371
|
+
|
|
372
|
+
- **Routines** — new `routines[]` field in module/preset meta.json for recurring scheduled agent work. Modules `stall-detection`, `auto-assign`, `backlog`, `ci-cd`, `build-api`, and `website-relaunch` now define routines with cron schedules
|
|
373
|
+
- `## Routines` section in BOOTSTRAP.md with `<!-- assignee, schedule, concurrencyPolicy -->` frontmatter per routine
|
|
374
|
+
- `createRoutine()` and `createRoutineTrigger()` methods in API client
|
|
375
|
+
- Subgoal expansion — `goal.subgoals[]` are expanded into the goal hierarchy as nested goals with `level: "team"` and `parentGoal`
|
|
376
|
+
- Robust JSON parser — string-aware brace tracking, trailing comma cleanup, markdown code fence fallback, `console.error` debug logging on parse failure
|
|
377
|
+
- ConfigReview file grouping — agent files grouped by `agents/<role>/` instead of flat `agents/`
|
|
378
|
+
- "Update templates" button on onboarding screen — `refresh-templates` worker action deletes cached templates and re-downloads from GitHub
|
|
379
|
+
|
|
380
|
+
### Changed
|
|
381
|
+
|
|
382
|
+
- **Template schema harmonized with Paperclip API** — `milestones[]` → `subgoals[]` (with `id`, `title`, `level`, `description`); `goal.issues[]` removed (issues belong to projects, not goals); `tasks[]` → `issues[]` everywhere
|
|
383
|
+
- BOOTSTRAP.md uses `<!-- -->` HTML-comment frontmatter instead of code fences (safe when descriptions contain code blocks)
|
|
384
|
+
- BOOTSTRAP.md issue frontmatter: only `assignee` + `project` (removed `milestone`)
|
|
385
|
+
- BOOTSTRAP.md provisioning steps show correct goal `level` (not hardcoded to `company`)
|
|
386
|
+
- `assembleCompany()` returns `initialIssues` + `initialRoutines` (was `initialTasks`)
|
|
387
|
+
- `createGoal()` API client now accepts `status` and `ownerAgentId` fields
|
|
388
|
+
- `ai-chat` action: `max_tokens` increased from 1024 to 16384
|
|
389
|
+
|
|
390
|
+
### Removed
|
|
391
|
+
|
|
392
|
+
- `GoalMilestone` typedef, `GoalIssue` typedef, `modulesWithActiveGoals()` export
|
|
393
|
+
- `milestone` field on template issues
|
|
394
|
+
- `completionCriteria` field on milestones (folded into subgoal `description`)
|
|
395
|
+
- `generateBootstrapDescription()` — bootstrap issue uses BOOTSTRAP.md directly
|
|
396
|
+
- `skipTaskModules` logic — goals no longer contain issues, so no skip needed
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
## [0.1.7] — 2026-03-29
|
|
401
|
+
|
|
402
|
+
### Changed
|
|
403
|
+
|
|
404
|
+
- `ai-chat` action: `max_tokens` increased from 1024 to 16384 — prevents truncated JSON when AI generates thorough goal descriptions with the new `goals[]`/`projects[]` format
|
|
405
|
+
|
|
406
|
+
### Fixed
|
|
407
|
+
|
|
408
|
+
- JSON parser in `tryExtractConfig` now string-aware: brace-depth tracker skips `{`/`}` inside quoted strings, preventing false matches on text like `"Build API with {userId}"`
|
|
409
|
+
- JSON parser handles trailing commas, line comments, unescaped newlines/tabs in AI-generated JSON
|
|
410
|
+
- JSON parser falls back to markdown code fence extraction (`\`\`\`json ... \`\`\``) when brace tracking finds no valid config
|
|
411
|
+
- Added `console.error` debug logging when config parsing fails — raw AI response is now visible in browser devtools
|
|
412
|
+
|
|
413
|
+
---
|
|
414
|
+
|
|
415
|
+
## [0.1.6] — 2026-03-29
|
|
416
|
+
|
|
417
|
+
### Changed
|
|
418
|
+
|
|
419
|
+
- Bootstrap issue now uses BOOTSTRAP.md content directly as its description — the CEO gets the full company spec, goals, projects, agents, issues, and provisioning steps instead of a generic "set up workspace" message
|
|
420
|
+
|
|
421
|
+
### Removed
|
|
422
|
+
|
|
423
|
+
- `generateBootstrapDescription()` — redundant; BOOTSTRAP.md IS the bootstrap issue
|
|
424
|
+
|
|
425
|
+
---
|
|
426
|
+
|
|
427
|
+
## [0.1.5] — 2026-03-29
|
|
428
|
+
|
|
429
|
+
### Added
|
|
430
|
+
|
|
431
|
+
- **Multi-goal support** — `goals[]` array replaces singular `goal` field; AI wizard generates hierarchical goals with `parentGoal` for sub-goals
|
|
432
|
+
- **Multi-project support** — `projects[]` array replaces singular `project` field; projects linked to goals via `goals[]` array (matches Paperclip API `goalIds`)
|
|
433
|
+
- `WizardProject` interface (`name`, `description`, `goals[]`) and `Goal.parentGoal` field
|
|
434
|
+
- `companyDescription` rendered in BOOTSTRAP.md (was previously only sent to the API)
|
|
435
|
+
- Full issue details in BOOTSTRAP.md: descriptions, `[priority]` annotations, `_(milestone: id)_` references
|
|
436
|
+
- Full milestone details in BOOTSTRAP.md: descriptions and `_Done when:_` completion criteria
|
|
437
|
+
- Preset roles shown in AI wizard catalog — `buildCatalog()` now includes `roles: engineer, ...` for each preset so the AI knows what selecting a preset implies
|
|
438
|
+
|
|
439
|
+
### Changed
|
|
440
|
+
|
|
441
|
+
- **BOOTSTRAP.md structure** — unified hierarchy: Goals (### top-level, #### sub-goals) → Projects (with workspace + goal links) → Agents (instructionsFilePath only) → Issues (grouped by goal, annotated with target project) → Provisioning Steps (explicit API creation order)
|
|
442
|
+
- **AI wizard config format** — `goal`/`goalDescription`/`project`/`projectDescription` (flat) → `goals: [{title, description, parentGoal?}]` + `projects: [{name, description, goals[]}]` (backward compatible with old format)
|
|
443
|
+
- **AI wizard prompts** — `goalDescription` instructions now demand thorough, spec-level detail; system prompts explain `goals[]`/`projects[]` format
|
|
444
|
+
- `assembleCompany()` signature — `goal`/`project`/`goals` → `userGoals`/`userProjects`/`inlineGoals`; module inline goals auto-linked as sub-goals of the main user goal
|
|
445
|
+
- Agent listings in BOOTSTRAP.md show `instructionsFilePath` only (removed legacy `cwd` field)
|
|
446
|
+
- Issues in BOOTSTRAP.md are grouped by goal with `_Project: "name"_` annotation instead of `goalId →` references (issues link to projects, not goals)
|
|
447
|
+
- Ungrouped module tasks rendered under "Initial tasks" heading (not under main goal title)
|
|
448
|
+
|
|
449
|
+
### Fixed
|
|
450
|
+
|
|
451
|
+
- AI wizard silently dropped preset modules — only roles were merged with AI-selected ones; now both modules and roles are defensively merged from the preset definition
|
|
452
|
+
- AI wizard rarely selected engineer — `buildCatalog()` listed presets with modules but not roles, so the AI didn't see that selecting a preset doesn't auto-add its roles
|
|
453
|
+
- BOOTSTRAP.md had two confusing issue sections ("Goal: ..." with issues and separate "Initial Tasks") — now unified under single `## Issues`
|
|
454
|
+
- `project` and `projectDescription` from AI wizard config were silently ignored — never reached `assembleCompany` or BOOTSTRAP.md
|
|
455
|
+
|
|
456
|
+
---
|
|
457
|
+
|
|
458
|
+
## [0.1.4] — 2026-03-28
|
|
459
|
+
|
|
460
|
+
### Added
|
|
461
|
+
|
|
462
|
+
- `companyDescription` field — AI wizard now generates a comprehensive 2-4 paragraph company description that's stored in `WizardContext` and passed to the Paperclip API when creating the company
|
|
463
|
+
- Preset role merging — AI wizard merges preset roles with AI-selected roles so preset roles aren't lost when the AI omits them
|
|
464
|
+
- Interview guidance — interview system prompt now covers what to ask about (stage, quality vs speed, team needs, repo details) and skips questions already answered
|
|
465
|
+
- Information preservation section — prompts instruct the AI to write thorough `companyDescription`, `goalDescription`, and `projectDescription` fields as the company's permanent record
|
|
466
|
+
- `launch-pack` preset — full executive team launch with CTO + CMO: strategy, tech, and marketing from day one
|
|
467
|
+
- 4 new modules: `codebase-onboarding` (audit existing codebases), `triage` (classify inbound GitHub issues), `dependency-management` (CVE scanning, safe patching), `release-management` (semver, changelogs, tagging)
|
|
468
|
+
- `repo-maintenance` preset — custodial maintenance for existing repos using the new modules
|
|
469
|
+
|
|
470
|
+
### Changed
|
|
471
|
+
|
|
472
|
+
- AI wizard config format: `extraModules`/`extraRoles` → `modules`/`roles` (all-inclusive lists that include preset defaults)
|
|
473
|
+
- AI wizard prompts now explicitly document that `engineer` is NOT a base role and must be listed for software projects
|
|
474
|
+
- Interview start message now includes the user's initial description (`{{DESCRIPTION}}`) so the AI has context from turn one
|
|
475
|
+
- Generate-config message reminds the AI to include all non-base roles and write thorough descriptions
|
|
476
|
+
- Single-shot system prompt restructured with numbered steps, "How Roles Work" section, and information preservation guidelines
|
|
477
|
+
- Template counts: 15 presets, 26 modules, 17 optional roles
|
|
478
|
+
|
|
479
|
+
### Fixed
|
|
480
|
+
|
|
481
|
+
- AI wizard no longer silently drops preset roles — `StepAiWizard` merges preset and AI-selected role arrays before dispatching
|
|
482
|
+
- Interview-mode template now passes `{{DESCRIPTION}}` in the start message (was previously blank, losing user context)
|
|
483
|
+
|
|
484
|
+
## [0.1.3] — 2026-03-28
|
|
485
|
+
|
|
486
|
+
### Added
|
|
487
|
+
|
|
488
|
+
- `publish:npm` and `prepublishOnly` scripts in `package.json` for streamlined npm publishing
|
|
489
|
+
- `files` whitelist in `package.json` to control published package contents
|
|
490
|
+
|
|
491
|
+
## [0.1.2] — 2026-03-25
|
|
492
|
+
|
|
493
|
+
### Changed
|
|
494
|
+
|
|
495
|
+
- Updated plugin references and repository links to point to the new repo
|
|
496
|
+
- Updated favicon path and added new favicon SVG
|
|
497
|
+
- Updated author name in manifest
|
|
498
|
+
|
|
499
|
+
## [0.1.1] — 2026-03-22
|
|
500
|
+
|
|
501
|
+
### Changed
|
|
502
|
+
|
|
503
|
+
- Version bump and manifest updates
|
|
504
|
+
|
|
505
|
+
---
|
|
506
|
+
|
|
507
|
+
## [0.1.0] — 2026-03-18
|
|
508
|
+
|
|
509
|
+
Initial release of the plugin. Replaces the standalone Ink-based CLI with a native Paperclip plugin.
|
|
510
|
+
|
|
511
|
+
### Added
|
|
512
|
+
|
|
513
|
+
- Interactive wizard UI (manual and AI-powered paths) for bootstrapping agent companies
|
|
514
|
+
- Preset, module, and role selection with hover-card detail previews and inline editing
|
|
515
|
+
- **Preview generated files** — collapsible file browser in the review step; each `.md` file can be expanded and edited before provisioning
|
|
516
|
+
- `preview-files` worker action: assembles to a temp dir and returns file contents without writing to disk
|
|
517
|
+
- `fileOverrides` support in `start-provision`: edits made in the UI are applied to assembled files before the API calls
|
|
518
|
+
- CEO adapter configuration (adapter type, working directory, model) in the wizard
|
|
519
|
+
- Real-time provisioning log streamed from the worker
|
|
520
|
+
- `check-auth` action for surfacing credential issues early (used by the summary step)
|
|
521
|
+
- Self-contained: templates, assembly logic, and API client are all bundled inside the plugin
|
|
522
|
+
- CI workflow (GitHub Actions) with pnpm, build, vitest, and node:test logic suite
|
|
523
|
+
- Pre-commit hook running prettier via lint-staged
|
|
524
|
+
|
|
525
|
+
### Template system
|
|
526
|
+
|
|
527
|
+
- 14 presets (fast, quality, rad, startup, research, full, secure, gtm, content, launch-mvp, build-api, website-relaunch, repo-maintenance, build-game)
|
|
528
|
+
- 22 modules across strategy, maintenance, and engineering workflow categories
|
|
529
|
+
- 17 optional roles (CEO is the only base role; Engineer is optional but included in most presets)
|
|
530
|
+
- All 22 modules now have `description` fields (previously only presets and roles had them)
|
|
531
|
+
- Engineer moved from base role to optional; added to 13 presets and to `pr-review`'s `activatesWithRoles`; task `assignTo` falls back to CEO if the named role is absent
|
|
532
|
+
- Gracefully optimistic capability resolution: responsibilities shift automatically as roles are added
|
|
533
|
+
- Inline goals with milestones and issues (from presets and modules)
|
|
534
|
+
- Heartbeat section injection into assembled `HEARTBEAT.md` files
|
|
535
|
+
|
|
536
|
+
### Configuration
|
|
537
|
+
|
|
538
|
+
- New `companiesDir` plugin setting — where assembled company workspaces are written. Defaults to `~/.paperclip/instances/default/companies`
|
|
539
|
+
- New `templatesRepoUrl` plugin setting — GitHub tree URL for auto-downloading templates. Defaults to the Yesterday-AI/paperclip-plugin-company-wizard repo
|
|
540
|
+
- `templatesPath` now defaults to `~/.paperclip/plugin-templates`, auto-downloaded from `templatesRepoUrl` if missing; falls back to bundled templates
|
|
541
|
+
- `sync-plugin.sh` added — syncs built artifacts and updates `manifest_json` in the Paperclip DB so schema changes are picked up on restart
|
|
542
|
+
|
|
543
|
+
### Bug fixes
|
|
544
|
+
|
|
545
|
+
- Bootstrap issue is now set to `todo` immediately after creation (was `backlog`, which the CEO agent inbox endpoint doesn't return)
|
|
546
|
+
- `issues.update` capability added to manifest to support the status update
|
|
547
|
+
- Generated files are now written directly to `companiesDir` — removes the container/host path split and fixes incorrect paths in the bootstrap issue description
|
|
548
|
+
- Improved loading screen: spinner + explanation that templates may be downloaded on first load
|
|
549
|
+
|
|
550
|
+
---
|
|
551
|
+
|
|
552
|
+
## Prior art
|
|
553
|
+
|
|
554
|
+
This plugin is derived from [`@yesterday-ai/paperclip-plugin-company-wizard`](https://github.com/Yesterday-AI/paperclip-plugin-company-wizard), the standalone Ink-based CLI. See that project's changelog for history prior to this plugin.
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Contributing to Company Wizard
|
|
2
|
+
|
|
3
|
+
Thanks for your interest in contributing! Company Wizard is a [Paperclip](https://github.com/paperclipai/paperclip) plugin that bootstraps agent company workspaces from composable templates.
|
|
4
|
+
|
|
5
|
+
## Getting Started
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
git clone <repo-url>
|
|
9
|
+
cd paperclip-plugin-company-wizard
|
|
10
|
+
pnpm install
|
|
11
|
+
pnpm build
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Development
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
pnpm build # esbuild: worker + manifest + UI → dist/
|
|
18
|
+
pnpm dev # watch mode (rebuilds on change)
|
|
19
|
+
pnpm test # vitest: tests/**/*.spec.ts
|
|
20
|
+
pnpm test:logic # node --test: src/logic/*.test.js
|
|
21
|
+
pnpm typecheck # tsc --noEmit
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Load the plugin in Paperclip by pointing to this directory (the `paperclipPlugin` field in `package.json` tells Paperclip where to find the built artifacts). After `pnpm build`, reload the plugin in the Paperclip UI — no reinstall required.
|
|
25
|
+
|
|
26
|
+
## Project Structure
|
|
27
|
+
|
|
28
|
+
```text
|
|
29
|
+
src/
|
|
30
|
+
├── worker.ts # Plugin worker: actions (preview-files, start-provision, check-auth)
|
|
31
|
+
├── manifest.ts # Plugin manifest (id, displayName, slots)
|
|
32
|
+
├── logic/ # Pure functions (assembly, resolution, template loading)
|
|
33
|
+
├── api/ # Paperclip REST API client and provisioning
|
|
34
|
+
└── ui/
|
|
35
|
+
├── main.tsx # UI entry point
|
|
36
|
+
├── context/ # WizardContext (state machine + reducer)
|
|
37
|
+
└── components/ # React components (WizardShell, step components, ConfigReview)
|
|
38
|
+
|
|
39
|
+
templates/
|
|
40
|
+
├── roles/ # All roles with role.meta.json (base: true for always-present)
|
|
41
|
+
├── modules/ # Composable capabilities with module.meta.json
|
|
42
|
+
└── presets/ # Curated module+role combinations with preset.meta.json
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Adding Templates
|
|
46
|
+
|
|
47
|
+
### New module
|
|
48
|
+
|
|
49
|
+
See [docs/TEMPLATES.md](docs/TEMPLATES.md) for the full module schema. Key points:
|
|
50
|
+
|
|
51
|
+
- Every capability needs a shared skill in `skills/<skill>.md`
|
|
52
|
+
- Role-specific overrides go in `agents/<role>/skills/<skill>.md` (only when genuinely different)
|
|
53
|
+
- Fallback variants are always role-specific (`.fallback.md`)
|
|
54
|
+
- Add `node --test` tests in `src/logic/` if the module has non-trivial resolution logic
|
|
55
|
+
|
|
56
|
+
### New role
|
|
57
|
+
|
|
58
|
+
See [docs/TEMPLATES.md](docs/TEMPLATES.md). Map `paperclipRole` to a valid Paperclip enum value. Set `base: true` only for roles that belong in every company (only the CEO currently has `base: true`).
|
|
59
|
+
|
|
60
|
+
### New preset
|
|
61
|
+
|
|
62
|
+
See [docs/TEMPLATES.md](docs/TEMPLATES.md). Test that the module combination resolves correctly. Presets can include inline `goals[]` arrays with milestones and issues.
|
|
63
|
+
|
|
64
|
+
## Pull Requests
|
|
65
|
+
|
|
66
|
+
- Keep PRs focused — one feature or fix per PR
|
|
67
|
+
- Add or update tests for logic changes
|
|
68
|
+
- Run `pnpm test && pnpm test:logic` before submitting
|
|
69
|
+
- Update `docs/TEMPLATES.md` if you add modules, roles, or presets
|
|
70
|
+
- Update `CHANGELOG.md` with your changes
|
|
71
|
+
|
|
72
|
+
## Code Style
|
|
73
|
+
|
|
74
|
+
- TypeScript for plugin infrastructure (`src/worker.ts`, `src/manifest.ts`, `src/ui/`)
|
|
75
|
+
- ESM only (`type: "module"`)
|
|
76
|
+
- Plain JS for logic/API modules (`src/logic/`, `src/api/`) — JSDoc where helpful
|
|
77
|
+
- Prettier via pre-commit hook (lint-staged)
|
|
78
|
+
|
|
79
|
+
## Reporting Issues
|
|
80
|
+
|
|
81
|
+
Use GitHub Issues. Include:
|
|
82
|
+
|
|
83
|
+
- What you expected vs what happened
|
|
84
|
+
- Plugin version (from `package.json`)
|
|
85
|
+
- Node.js version (`node --version`)
|
|
86
|
+
- OS
|
|
87
|
+
|
|
88
|
+
## License
|
|
89
|
+
|
|
90
|
+
By contributing, you agree that your contributions will be licensed under the [MIT License](LICENSE).
|
package/dist/manifest.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
var manifest = {
|
|
3
3
|
id: "starlein.paperclip-plugin-company-wizard",
|
|
4
4
|
apiVersion: 1,
|
|
5
|
-
version: "0.3.
|
|
5
|
+
version: "0.3.23",
|
|
6
6
|
displayName: "Company Wizard",
|
|
7
7
|
description: "AI-powered wizard to bootstrap agent companies from composable templates",
|
|
8
8
|
author: "Sascha Pietrowski <sp@speednetwork.de>",
|
package/dist/manifest.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/manifest.ts"],
|
|
4
|
-
"sourcesContent": ["import type { PaperclipPluginManifestV1 } from '@paperclipai/plugin-sdk';\n\nconst manifest: PaperclipPluginManifestV1 = {\n id: 'starlein.paperclip-plugin-company-wizard',\n apiVersion: 1,\n version: '0.3.
|
|
4
|
+
"sourcesContent": ["import type { PaperclipPluginManifestV1 } from '@paperclipai/plugin-sdk';\n\nconst manifest: PaperclipPluginManifestV1 = {\n id: 'starlein.paperclip-plugin-company-wizard',\n apiVersion: 1,\n version: '0.3.23',\n displayName: 'Company Wizard',\n description: 'AI-powered wizard to bootstrap agent companies from composable templates',\n author: 'Sascha Pietrowski <sp@speednetwork.de>',\n categories: ['workspace', 'ui'],\n capabilities: [\n 'companies.read',\n 'issues.create',\n 'issues.read',\n 'issues.update',\n 'goals.create',\n 'goals.read',\n 'agents.read',\n 'projects.read',\n 'plugin.state.read',\n 'plugin.state.write',\n 'secrets.read-ref',\n 'events.subscribe',\n 'ui.page.register',\n 'ui.sidebar.register',\n ],\n instanceConfigSchema: {\n type: 'object',\n properties: {\n companiesDir: {\n type: 'string',\n description:\n 'Directory where assembled company workspaces are written. Defaults to ~/.paperclip/instances/default/companies. Override for Docker setups (e.g. /paperclip/instances/default/companies).',\n },\n templatesPath: {\n type: 'string',\n description:\n 'Path to the templates directory. Defaults to ~/.paperclip/plugin-templates (auto-downloaded from templatesRepoUrl if missing). Override for Docker setups (e.g. /paperclip/plugin-templates).',\n },\n templatesRepoUrl: {\n type: 'string',\n default: 'https://github.com/starlein/paperclip-plugin-company-wizard/tree/main/templates',\n description:\n 'GitHub tree URL to pull templates from when the templates directory does not exist.',\n },\n anthropicApiKey: {\n type: 'string',\n description:\n 'Anthropic API key for the AI wizard (e.g. sk-ant-...). Required to use the AI-powered company setup path.',\n },\n paperclipUrl: {\n type: 'string',\n description:\n 'Paperclip instance URL. Defaults to http://localhost:3100 or the PAPERCLIP_PUBLIC_URL env var.',\n },\n paperclipEmail: {\n type: 'string',\n description: 'Board login email (for authenticated instances).',\n },\n paperclipPassword: {\n type: 'string',\n description: 'Board login password (for authenticated instances).',\n },\n disableBoardApprovalOnNewCompanies: {\n type: 'boolean',\n default: false,\n description:\n 'Optional. If true, the wizard will PATCH new companies to set requireBoardApprovalForNewAgents=false during provisioning. Leave false to preserve approval-gated hiring policies.',\n },\n enableEnrichedPersonas: {\n type: 'boolean',\n default: false,\n description:\n 'Optional. If true, expert roles are enriched with domain lenses (named mental models), module skills gain concrete output/review bars with negative examples, and HEARTBEAT.md gains explicit done-criteria. Leave false (default) for the lean baseline personas.',\n },\n },\n },\n entrypoints: {\n worker: './dist/worker.js',\n ui: './dist/ui',\n },\n ui: {\n slots: [\n {\n type: 'page',\n id: 'company-wizard',\n displayName: 'Company Wizard',\n exportName: 'WizardPage',\n routePath: 'company-creator',\n },\n {\n type: 'sidebar',\n id: 'company-wizard-link',\n displayName: 'Create Company',\n exportName: 'SidebarLink',\n },\n ],\n },\n};\n\nexport default manifest;\n"],
|
|
5
5
|
"mappings": ";AAEA,IAAM,WAAsC;AAAA,EAC1C,IAAI;AAAA,EACJ,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,aAAa;AAAA,EACb,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,YAAY,CAAC,aAAa,IAAI;AAAA,EAC9B,cAAc;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,sBAAsB;AAAA,IACpB,MAAM;AAAA,IACN,YAAY;AAAA,MACV,cAAc;AAAA,QACZ,MAAM;AAAA,QACN,aACE;AAAA,MACJ;AAAA,MACA,eAAe;AAAA,QACb,MAAM;AAAA,QACN,aACE;AAAA,MACJ;AAAA,MACA,kBAAkB;AAAA,QAChB,MAAM;AAAA,QACN,SAAS;AAAA,QACT,aACE;AAAA,MACJ;AAAA,MACA,iBAAiB;AAAA,QACf,MAAM;AAAA,QACN,aACE;AAAA,MACJ;AAAA,MACA,cAAc;AAAA,QACZ,MAAM;AAAA,QACN,aACE;AAAA,MACJ;AAAA,MACA,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,aAAa;AAAA,MACf;AAAA,MACA,mBAAmB;AAAA,QACjB,MAAM;AAAA,QACN,aAAa;AAAA,MACf;AAAA,MACA,oCAAoC;AAAA,QAClC,MAAM;AAAA,QACN,SAAS;AAAA,QACT,aACE;AAAA,MACJ;AAAA,MACA,wBAAwB;AAAA,QACtB,MAAM;AAAA,QACN,SAAS;AAAA,QACT,aACE;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AAAA,EACA,aAAa;AAAA,IACX,QAAQ;AAAA,IACR,IAAI;AAAA,EACN;AAAA,EACA,IAAI;AAAA,IACF,OAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,aAAa;AAAA,QACb,YAAY;AAAA,QACZ,WAAW;AAAA,MACb;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,aAAa;AAAA,QACb,YAAY;AAAA,MACd;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAO,mBAAQ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@starlein/paperclip-plugin-company-wizard",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.23",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "AI-powered wizard to bootstrap paperclip agent companies from composable templates (for latest paperclip version)",
|
|
6
6
|
"repository": "https://github.com/starlein/paperclip-plugin-company-wizard",
|
|
@@ -28,7 +28,9 @@
|
|
|
28
28
|
},
|
|
29
29
|
"files": [
|
|
30
30
|
"dist/",
|
|
31
|
-
"templates/"
|
|
31
|
+
"templates/",
|
|
32
|
+
"CHANGELOG.md",
|
|
33
|
+
"CONTRIBUTING.md"
|
|
32
34
|
],
|
|
33
35
|
"paperclipPlugin": {
|
|
34
36
|
"manifest": "./dist/manifest.js",
|