@starlein/paperclip-plugin-company-wizard 0.4.21 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,37 @@ All notable changes to the Company Wizard plugin are documented here.
4
4
 
5
5
  The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
6
 
7
+ ## [0.5.0] - 2026-08-10
8
+
9
+ ### Added
10
+
11
+ - AI company generation can now use a governed OpenAI API key as an alternative to Anthropic. The OpenAI path uses the Responses API with `gpt-5.6-sol` and high reasoning effort.
12
+ - Added an `aiProvider` plugin setting (`anthropic` or `openai`) and an `openaiApiKey` governed Secret field. Existing configurations remain on Anthropic by default.
13
+
14
+ ### Changed
15
+
16
+ - Anthropic generation now uses `claude-opus-5` with adaptive thinking, max effort, and a 65,536-token output ceiling. Text extraction ignores thinking blocks and returns only final text blocks.
17
+ - Both providers use the existing asynchronous start/poll generation path, keeping API keys and resolved Secret values inside the worker.
18
+ - Incomplete, truncated, empty, or refused provider responses fail the generation job instead of being accepted as a valid company configuration.
19
+
20
+ ## [0.4.23] - 2026-08-10
21
+
22
+ ### Fixed
23
+
24
+ - Anthropic configuration now accepts both direct/legacy string keys and Paperclip's object-shaped governed Secret bindings. Selecting a `local_encrypted` company Secret no longer fails the host's `instanceConfigSchema` validation before the binding can be authorized and persisted.
25
+
26
+ ## [0.4.22] - 2026-08-10
27
+
28
+ ### Fixed
29
+
30
+ - Lowered the manifest's host installation floor from SDK release CalVer `2026.707.0` to Paperclip package semver `0.3.1`. Source-derived and `npx paperclipai` installations that report `0.3.1` can now install the plugin; Paperclip still validates plugin API v1 and declared capabilities before activation.
31
+ - Resolved current object-shaped, company-scoped Anthropic Secret bindings while preserving direct-key and legacy-host compatibility.
32
+ - Plugin update preparation now surfaces installed-plugin lookup failures instead of misreporting them as a missing installation.
33
+
34
+ ### Changed
35
+
36
+ - Updated the shipped Paperclip SDK/shared development contract to stable `2026.722.0`.
37
+
7
38
  ## [0.4.21] - 2026-08-07
8
39
 
9
40
  ### Changed
package/README.md CHANGED
@@ -15,7 +15,7 @@
15
15
 
16
16
  ---
17
17
 
18
- > **Fork:** This is a community-maintained fork of [yesterday-AI/paperclip-plugin-company-wizard](https://github.com/yesterday-AI/paperclip-plugin-company-wizard), updated for the current Paperclip API (`>=2026.707.0`) with substantial bug fixes. End-to-end company setup is governed through current Paperclip workflows as of v0.4.21.
18
+ > **Fork:** This is a community-maintained fork of [yesterday-AI/paperclip-plugin-company-wizard](https://github.com/yesterday-AI/paperclip-plugin-company-wizard), updated for Paperclip plugin API v1 and the current published SDK with substantial bug fixes. End-to-end company setup is governed through current Paperclip workflows as of v0.5.0.
19
19
 
20
20
  **Update Company:** If you have provisioned your company before with some older version of this plugin or you have an existing company, since version 0.4.6 you can update your existing company by providing the company ID in the wizard summary page. It will make a soft update of agent instructions and workflow/instruction documents.
21
21
 
@@ -26,6 +26,7 @@
26
26
 
27
27
  - Bootstrap metadata fields renamed to match the Paperclip API exactly: `parentId`, `assigneeAgentId`, `projectId`, `goalIds`
28
28
  - CEO is provisioned with correct `capabilities` metadata so newly created CEOs are no longer saved with empty summaries
29
+ - The manifest installation floor uses Paperclip's package semver (`>=0.3.1`) rather than the SDK release CalVer, allowing compatible source-derived and `npx paperclipai` hosts that report `0.3.1`; plugin API and declared-capability validation remain the authoritative install-time compatibility checks
29
30
  - `@paperclipai/plugin-sdk` and `@paperclipai/shared` declared as `peerDependencies` with minimum version `>=2026.707.0` — the host provides the SDK at runtime (externalized from the bundle)
30
31
  - `security-engineer` role now maps to the dedicated Paperclip `security` enum value (was `general`)
31
32
 
@@ -52,8 +53,8 @@
52
53
 
53
54
  #### AI wizard
54
55
 
55
- - Config generation uses `claude-opus-4-8` with `max_tokens: 32768` so a full-spec config is never truncated mid-JSON
56
- - All Anthropic calls run as background jobs in the worker (start + poll), eliminating the 30 s RPC timeout that previously crashed config generation
56
+ - Choose Anthropic or OpenAI in plugin settings. Anthropic generation uses `claude-opus-5` with adaptive thinking, max effort, and a 65,536-token ceiling; OpenAI/Codex generation uses `gpt-5.6-sol` with high reasoning effort and the same output ceiling.
57
+ - All provider calls run as background jobs in the worker (start + poll), eliminating the 30 s RPC timeout that previously crashed config generation
57
58
  - AI wizard now generates domain-specific initial issues from the project brief that lead the bootstrap backlog ahead of generic scaffolding issues
58
59
  - Preset roles are defensively merged with AI-selected roles so preset roles are no longer silently dropped
59
60
 
@@ -598,7 +599,9 @@ Configure the plugin via **Settings → Plugins → Company Wizard** in the Pape
598
599
  | `paperclipUrl` | No | Paperclip instance URL. Defaults to `http://localhost:3100` or `PAPERCLIP_PUBLIC_URL` env var. |
599
600
  | `paperclipEmail` | No | Board login email. Required for authenticated (non-`local_trusted`) instances. |
600
601
  | `paperclipPassword` | No | Board login password. Stored as a secret ref. |
601
- | `anthropicApiKey` | No | Anthropic API key for AI wizard mode. Stored as a secret ref. Required to use the AI-powered setup path. |
602
+ | `aiProvider` | No | AI wizard provider: `anthropic` (default) or `openai`. |
603
+ | `anthropicApiKey` | No | Anthropic API key for AI wizard mode. Stored as a governed secret ref. Required when `aiProvider` is `anthropic`. |
604
+ | `openaiApiKey` | No | OpenAI API key for GPT/Codex AI wizard mode. Stored as a governed secret ref. Required when `aiProvider` is `openai`. |
602
605
  | `disableBoardApprovalOnNewCompanies` | No | If `true`, the wizard PATCHes new companies to set `requireBoardApprovalForNewAgents=false` during provisioning. Leave `false` to preserve approval-gated hiring. Defaults to `false`. |
603
606
  For enriched personas: there is no plugin setting. Template fragments are applied automatically when present.
604
607
 
package/dist/manifest.js CHANGED
@@ -2,12 +2,16 @@
2
2
  var manifest = {
3
3
  id: "starlein.paperclip-plugin-company-wizard",
4
4
  apiVersion: 1,
5
- version: "0.4.21",
5
+ version: "0.5.0",
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>",
9
9
  categories: ["workspace", "ui"],
10
- minimumHostVersion: "2026.707.0",
10
+ // Some source-derived and npx installations report Paperclip's package
11
+ // semver instead of its release CalVer. API shape is gated separately by
12
+ // apiVersion and capability validation, so keep the install floor on the
13
+ // package-version axis rather than rejecting an otherwise compatible host.
14
+ minimumHostVersion: "0.3.1",
11
15
  capabilities: [
12
16
  "companies.read",
13
17
  "issues.create",
@@ -41,9 +45,25 @@ var manifest = {
41
45
  default: "https://github.com/starlein/paperclip-plugin-company-wizard/tree/main/templates",
42
46
  description: "GitHub tree URL for template downloads. The default is correct for most setups \u2014 only change this if using a custom fork."
43
47
  },
44
- anthropicApiKey: {
48
+ aiProvider: {
45
49
  type: "string",
46
- description: "Anthropic API key for the AI wizard (e.g. sk-ant-...). Required to use the AI-powered company setup path."
50
+ enum: ["anthropic", "openai"],
51
+ default: "anthropic",
52
+ description: "AI provider used for company generation. Anthropic uses Claude Opus 5 at max effort; OpenAI uses GPT-5.6 Sol at high reasoning effort."
53
+ },
54
+ anthropicApiKey: {
55
+ // Paperclip's secret picker submits an EnvSecretRefBinding object,
56
+ // while direct keys and older hosts still submit strings. Keep both
57
+ // representations schema-valid; the host validates governed bindings
58
+ // and the worker resolves them before calling Anthropic.
59
+ type: ["string", "object"],
60
+ format: "secret-ref",
61
+ description: "Anthropic API key for the AI wizard. Paste a key or select a saved Paperclip company secret; Paperclip stores pasted values as governed secret references."
62
+ },
63
+ openaiApiKey: {
64
+ type: ["string", "object"],
65
+ format: "secret-ref",
66
+ description: "OpenAI API key for GPT/Codex company generation. Paste a key or select a saved Paperclip company secret; required when AI Provider is openai."
47
67
  },
48
68
  paperclipUrl: {
49
69
  type: "string",
@@ -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.4.21',\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 minimumHostVersion: '2026.707.0',\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 'skills.managed',\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. Auto-detected: ~/instances/default/companies in Docker setups, ~/.paperclip/instances/default/companies otherwise. Rarely needs manual override.',\n },\n templatesPath: {\n type: 'string',\n description:\n 'Path to the templates directory. Auto-detected: ~/plugin-templates in Docker setups, ~/.paperclip/plugin-templates otherwise. Rarely needs manual override.',\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 for template downloads. The default is correct for most setups \u2014 only change this if using a custom fork.',\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 },\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
- "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,oBAAoB;AAAA,EACpB,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,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,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;",
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.5.0',\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 // Some source-derived and npx installations report Paperclip's package\n // semver instead of its release CalVer. API shape is gated separately by\n // apiVersion and capability validation, so keep the install floor on the\n // package-version axis rather than rejecting an otherwise compatible host.\n minimumHostVersion: '0.3.1',\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 'skills.managed',\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. Auto-detected: ~/instances/default/companies in Docker setups, ~/.paperclip/instances/default/companies otherwise. Rarely needs manual override.',\n },\n templatesPath: {\n type: 'string',\n description:\n 'Path to the templates directory. Auto-detected: ~/plugin-templates in Docker setups, ~/.paperclip/plugin-templates otherwise. Rarely needs manual override.',\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 for template downloads. The default is correct for most setups \u2014 only change this if using a custom fork.',\n },\n aiProvider: {\n type: 'string',\n enum: ['anthropic', 'openai'],\n default: 'anthropic',\n description:\n 'AI provider used for company generation. Anthropic uses Claude Opus 5 at max effort; OpenAI uses GPT-5.6 Sol at high reasoning effort.',\n },\n anthropicApiKey: {\n // Paperclip's secret picker submits an EnvSecretRefBinding object,\n // while direct keys and older hosts still submit strings. Keep both\n // representations schema-valid; the host validates governed bindings\n // and the worker resolves them before calling Anthropic.\n type: ['string', 'object'],\n format: 'secret-ref',\n description:\n 'Anthropic API key for the AI wizard. Paste a key or select a saved Paperclip company secret; Paperclip stores pasted values as governed secret references.',\n },\n openaiApiKey: {\n type: ['string', 'object'],\n format: 'secret-ref',\n description:\n 'OpenAI API key for GPT/Codex company generation. Paste a key or select a saved Paperclip company secret; required when AI Provider is openai.',\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 },\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
+ "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;AAAA;AAAA;AAAA;AAAA,EAK9B,oBAAoB;AAAA,EACpB,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,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,YAAY;AAAA,QACV,MAAM;AAAA,QACN,MAAM,CAAC,aAAa,QAAQ;AAAA,QAC5B,SAAS;AAAA,QACT,aACE;AAAA,MACJ;AAAA,MACA,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,QAKf,MAAM,CAAC,UAAU,QAAQ;AAAA,QACzB,QAAQ;AAAA,QACR,aACE;AAAA,MACJ;AAAA,MACA,cAAc;AAAA,QACZ,MAAM,CAAC,UAAU,QAAQ;AAAA,QACzB,QAAQ;AAAA,QACR,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,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
  }