@starlein/paperclip-plugin-company-wizard 0.4.12 → 0.4.13

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,18 @@ 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.4.13] - 2026-06-25
8
+
9
+ ### Changed
10
+
11
+ **Worker agents default to `auto` thinking effort, and per-role adapter levels now reach provisioning**
12
+
13
+ Provisioned worker (non-CEO) agents were pinned to `thinkingLevel`/`modelReasoningEffort: "medium"`, and the `"thinkingLevel": "auto"` declared in each `role.meta.json` was silently dropped at provisioning time — the `roleAdapterOverrides` passed to `buildWorkerAdapterConfig` were assembled only from **module** `adapterOverrides`, never from the role's own `adapter` block. So every worker ran at a flat `medium` regardless of its template.
14
+
15
+ - `DEFAULT_WORKER_THINKING_LEVEL` changed from `medium` to `auto` — let the model pick effort per task instead of pinning a flat level. The CEO default is unchanged (`high`, still inherits the wizard's explicit setting).
16
+ - `assembleCompany` now seeds `roleAdapterOverrides` from each role's `role.meta.json` adapter (`thinkingLevel` / `modelReasoningEffort` / `reasoningEffort` / `effort`), so a role's declared level reaches the provisioned agent. Module `adapterOverrides` still merge on top (module wins).
17
+ - `buildAdapterConfig` now also resolves an override expressed as `effort`, and strips the raw thinking keys before re-applying the resolved level per adapter — so a non-codex adapter no longer carries a stray `thinkingLevel`.
18
+
7
19
  ## [0.4.12] - 2026-06-25
8
20
 
9
21
  ### Changed
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.4.12",
5
+ version: "0.4.13",
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>",
@@ -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.12',\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. 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"],
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.13',\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. 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
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,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/dist/worker.js CHANGED
@@ -9282,7 +9282,7 @@ import { join } from "node:path";
9282
9282
  var DEFAULT_CEO_ADAPTER_TYPE = "codex_local";
9283
9283
  var DEFAULT_CEO_MODEL = "gpt-5.5";
9284
9284
  var DEFAULT_CEO_THINKING_LEVEL = "high";
9285
- var DEFAULT_WORKER_THINKING_LEVEL = "medium";
9285
+ var DEFAULT_WORKER_THINKING_LEVEL = "auto";
9286
9286
  var DEFAULT_CEO_MAX_CONCURRENT_RUNS = 1;
9287
9287
  var DEFAULT_CEO_HEARTBEAT_INTERVAL_SEC = 3600;
9288
9288
  var DEFAULT_CLAUDE_CEO_MODEL = "claude-opus-4-6";
@@ -9306,7 +9306,7 @@ function buildAdapterConfig({
9306
9306
  const defaultModel = adapterType === "claude_local" ? DEFAULT_CLAUDE_CEO_MODEL : DEFAULT_CEO_MODEL;
9307
9307
  const model = userModel || overrideModel || defaultModel;
9308
9308
  const userThinking = inheritUserThinking ? asTrimmedString(userCeoAdapter.thinkingLevel) || asTrimmedString(userCeoAdapter.modelReasoningEffort) || asTrimmedString(userCeoAdapter.reasoningEffort) : "";
9309
- const thinkingLevel = userThinking || asTrimmedString(roleAdapterOverrides.thinkingLevel) || asTrimmedString(roleAdapterOverrides.modelReasoningEffort) || asTrimmedString(roleAdapterOverrides.reasoningEffort) || defaultThinkingLevel;
9309
+ const thinkingLevel = userThinking || asTrimmedString(roleAdapterOverrides.thinkingLevel) || asTrimmedString(roleAdapterOverrides.modelReasoningEffort) || asTrimmedString(roleAdapterOverrides.reasoningEffort) || asTrimmedString(roleAdapterOverrides.effort) || defaultThinkingLevel;
9310
9310
  const adapterConfig = {
9311
9311
  ...roleAdapterOverrides,
9312
9312
  cwd: userCwd || companyDir,
@@ -9314,6 +9314,10 @@ function buildAdapterConfig({
9314
9314
  };
9315
9315
  delete adapterConfig.promptTemplate;
9316
9316
  delete adapterConfig.bootstrapPromptTemplate;
9317
+ delete adapterConfig.thinkingLevel;
9318
+ delete adapterConfig.modelReasoningEffort;
9319
+ delete adapterConfig.reasoningEffort;
9320
+ delete adapterConfig.effort;
9317
9321
  if (adapterType === "codex_local") {
9318
9322
  adapterConfig.modelReasoningEffort = thinkingLevel;
9319
9323
  adapterConfig.thinkingLevel = thinkingLevel;
@@ -9526,6 +9530,14 @@ async function assembleCompany({
9526
9530
  const initialRoutines = Array.isArray(presetRoutines) ? presetRoutines.map((routine) => ({ ...routine, source: routine.source || "preset" })) : [];
9527
9531
  const explicitBootstrapLabels = Array.isArray(presetLabels) ? [...presetLabels] : [];
9528
9532
  const roleAdapterOverrides = /* @__PURE__ */ new Map();
9533
+ for (const role of allRoles) {
9534
+ const roleMeta = roleMetaByName.get(role) || {};
9535
+ const adapter = roleMeta && typeof roleMeta.adapter === "object" ? roleMeta.adapter : {};
9536
+ const thinkingLevel = typeof adapter.thinkingLevel === "string" && adapter.thinkingLevel.trim() || typeof adapter.modelReasoningEffort === "string" && adapter.modelReasoningEffort.trim() || typeof adapter.reasoningEffort === "string" && adapter.reasoningEffort.trim() || typeof adapter.effort === "string" && adapter.effort.trim() || "";
9537
+ if (thinkingLevel) {
9538
+ roleAdapterOverrides.set(role, { thinkingLevel });
9539
+ }
9540
+ }
9529
9541
  const docRoleMap = /* @__PURE__ */ new Map();
9530
9542
  const addDocRoles = (docName, roles) => {
9531
9543
  const set = docRoleMap.get(docName) ?? /* @__PURE__ */ new Set();
@@ -11011,7 +11023,7 @@ var __dirname = path2.dirname(fileURLToPath2(import.meta.url));
11011
11023
  var DEFAULT_TEMPLATES_REPO_URL = "https://github.com/starlein/paperclip-plugin-company-wizard/tree/main/templates";
11012
11024
  var BUNDLED_TEMPLATES_DIR = path2.resolve(__dirname, "..", "templates");
11013
11025
  var PLUGIN_PACKAGE_NAME = "@starlein/paperclip-plugin-company-wizard";
11014
- var CURRENT_PLUGIN_VERSION = "0.4.12";
11026
+ var CURRENT_PLUGIN_VERSION = "0.4.13";
11015
11027
  var NPM_LATEST_URL = "https://registry.npmjs.org/@starlein%2Fpaperclip-plugin-company-wizard/latest";
11016
11028
  function copyDirSync(src, dest) {
11017
11029
  fs2.mkdirSync(dest, { recursive: true });