@jiggai/recipes 0.4.72 → 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/docs/COMMANDS.md CHANGED
@@ -221,12 +221,6 @@ openclaw recipes handoff --team-id development-team --ticket 0007 --tester test
221
221
  openclaw recipes complete --team-id development-team --ticket 0007
222
222
  ```
223
223
 
224
- ### Clean up stale assignment stubs for done work
225
-
226
- ```bash
227
- openclaw recipes cleanup-closed-assignments --team-id development-team
228
- openclaw recipes cleanup-closed-assignments --team-id development-team --ticket 0050 0064
229
- ```
230
224
 
231
225
  ---
232
226
 
@@ -157,11 +157,6 @@ openclaw recipes move-ticket --team-id development-team --ticket 0007 --to done
157
157
  openclaw recipes assign --team-id development-team --ticket 0007 --owner devops
158
158
  ```
159
159
 
160
- ### Clean up stale assignment stubs for closed work
161
-
162
- ```bash
163
- openclaw recipes cleanup-closed-assignments --team-id development-team
164
- ```
165
160
 
166
161
  ---
167
162
 
package/index.ts CHANGED
@@ -27,7 +27,6 @@ import {
27
27
  } from "./src/handlers/install";
28
28
  import {
29
29
  handleAssign,
30
- handleCleanupClosedAssignments,
31
30
  handleDispatch,
32
31
  handleHandoff,
33
32
  handleMoveTicket,
@@ -245,9 +244,10 @@ const recipesPlugin = {
245
244
  api.on("message_received" as never, approvalReplyHandler as never, { priority: 50 } as unknown as { priority: number });
246
245
 
247
246
 
248
- // On plugin load, ensure multi-agent config has an explicit agents.list with main at top.
249
- // This is idempotent and only writes if a change is required.
250
- (async () => {
247
+ // Ensure multi-agent config has an explicit agents.list with main at top.
248
+ // Deferred to gateway_start because api.runtime.config.current() is not
249
+ // available during register() in OpenClaw 2026.5.x.
250
+ api.on("gateway_start", async () => {
251
251
  try {
252
252
  const cfgObj = await loadOpenClawConfig(api);
253
253
  const before = JSON.stringify(cfgObj.agents?.list ?? null);
@@ -259,11 +259,9 @@ const recipesPlugin = {
259
259
  console.error("[recipes] ensured agents.list includes main as first/default");
260
260
  }
261
261
  } catch (e) {
262
- // Keep install/scaffold warning-free; this is non-critical and can fail on locked-down configs.
263
- // (If needed, diagnose via debug logs instead of emitting warnings.)
264
262
  console.error(`[recipes] note: failed to ensure main agent in agents.list: ${(e as Error).message}`);
265
263
  }
266
- })();
264
+ });
267
265
 
268
266
  api.registerCli(
269
267
  ({ program }) => {
@@ -797,19 +795,6 @@ workflows
797
795
  console.log(JSON.stringify({ ok: true, moved: { from: res.from, to: res.to } }, null, 2));
798
796
  });
799
797
 
800
- cmd
801
- .command("cleanup-closed-assignments")
802
- .description("Archive assignment stubs for tickets already in work/done (prevents done work resurfacing)")
803
- .requiredOption("--team-id <teamId>", "Team id")
804
- .option("--ticket <ticketNums...>", "Optional ticket numbers to target (e.g. 0050 0064)")
805
- .action(async (options: { teamId?: string; ticket?: string[] }) => {
806
- if (!options.teamId) throw new Error("--team-id is required");
807
- const res = await handleCleanupClosedAssignments(api, {
808
- teamId: options.teamId,
809
- ticketNums: options.ticket,
810
- });
811
- console.log(JSON.stringify(res, null, 2));
812
- });
813
798
 
814
799
  cmd
815
800
  .command("assign")
@@ -2,7 +2,7 @@
2
2
  "id": "recipes",
3
3
  "name": "Recipes",
4
4
  "description": "Markdown recipes that scaffold agents and teams (workspace-local).",
5
- "version": "0.4.72",
5
+ "version": "0.5.0",
6
6
  "configSchema": {
7
7
  "type": "object",
8
8
  "additionalProperties": false,
@@ -72,5 +72,5 @@
72
72
  "help": "Controls whether recipe-defined cron jobs are installed during scaffold. off=never, prompt=ask, on=auto-install."
73
73
  }
74
74
  },
75
- "main": "index.ts"
75
+ "main": "dist/index.js"
76
76
  }
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@jiggai/recipes",
3
- "version": "0.4.72",
3
+ "version": "0.5.0",
4
4
  "description": "ClawRecipes plugin for OpenClaw (markdown recipes -> scaffold agents/teams)",
5
- "main": "index.ts",
5
+ "main": "dist/index.js",
6
6
  "type": "commonjs",
7
7
  "openclaw": {
8
8
  "extensions": [
@@ -10,16 +10,20 @@
10
10
  ],
11
11
  "compat": {
12
12
  "pluginApi": ">=1.0.0",
13
- "pluginApiRange": ">=2026.3"
13
+ "pluginApiRange": ">=2026.5"
14
14
  },
15
15
  "build": {
16
- "openclawVersion": "2026.4.20"
17
- }
16
+ "openclawVersion": "2026.5.7"
17
+ },
18
+ "runtimeExtensions": [
19
+ "./dist/index.js"
20
+ ]
18
21
  },
19
22
  "publishConfig": {
20
23
  "access": "public"
21
24
  },
22
25
  "files": [
26
+ "dist/",
23
27
  "index.ts",
24
28
  "src/",
25
29
  "openclaw.plugin.json",
@@ -44,9 +48,11 @@
44
48
  "jscpd": "jscpd src/ index.ts --min-lines 8 --min-tokens 50",
45
49
  "prepare": "husky || true",
46
50
  "check:plugin-version": "node scripts/check-openclaw-plugin-version.mjs",
47
- "prepack": "npm run -s sync:plugin-version && npm run -s check:plugin-version",
48
- "prepublishOnly": "npm run -s sync:plugin-version && npm run -s check:plugin-version",
49
- "sync:plugin-version": "node scripts/sync-openclaw-plugin-version.mjs"
51
+ "prepack": "npm run -s build:plugin && npm run -s sync:plugin-version && npm run -s check:plugin-version",
52
+ "prepublishOnly": "npm run -s build:plugin && npm run -s sync:plugin-version && npm run -s check:plugin-version",
53
+ "sync:plugin-version": "node scripts/sync-openclaw-plugin-version.mjs",
54
+ "build:plugin": "esbuild index.ts --bundle --platform=node --format=cjs --target=node20 --outfile=dist/index.js --external:openclaw/plugin-sdk",
55
+ "verify:runtime-package": "node scripts/verify-runtime-package.mjs"
50
56
  },
51
57
  "keywords": [
52
58
  "openclaw",
@@ -69,7 +75,8 @@
69
75
  "jscpd": "^4.0.5",
70
76
  "lint-staged": "^16.2.7",
71
77
  "typescript-eslint": "^8.18.0",
72
- "vitest": "^3.2.4"
78
+ "vitest": "^3.2.4",
79
+ "esbuild": "^0.27.3"
73
80
  },
74
81
  "lint-staged": {
75
82
  "*.ts": [
@@ -18,7 +18,8 @@ export function workspacePath(api: OpenClawPluginApi, ...parts: string[]) {
18
18
  * @returns Array of { source, path }
19
19
  */
20
20
  export async function listRecipeFiles(api: OpenClawPluginApi, cfg: Required<RecipesConfig>) {
21
- const builtinDir = path.resolve(__dirname, "..", "..", "recipes", "default");
21
+ const pluginRoot = api.rootDir ?? path.resolve(__dirname, "..", "..");
22
+ const builtinDir = path.resolve(pluginRoot, "recipes", "default");
22
23
  const workspaceDir = workspacePath(api, cfg.workspaceRecipesDir);
23
24
 
24
25
  const out: Array<{ source: "builtin" | "workspace"; path: string }> = [];