@jiggai/kitchen 0.5.14 → 0.5.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +2 -2
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/server/app/_global-error.html +2 -2
  5. package/.next/server/app/_global-error.rsc +1 -1
  6. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/.next/server/app/_not-found.html +1 -1
  12. package/.next/server/app/_not-found.rsc +2 -2
  13. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  14. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  15. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  16. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  19. package/.next/server/app/api/agents/[id]/route.js.nft.json +1 -1
  20. package/.next/server/app/api/agents/file/route.js.nft.json +1 -1
  21. package/.next/server/app/api/agents/files/route.js.nft.json +1 -1
  22. package/.next/server/app/api/agents/skills/install/route.js.nft.json +1 -1
  23. package/.next/server/app/api/agents/skills/route.js.nft.json +1 -1
  24. package/.next/server/app/api/cron/add/route.js.nft.json +1 -1
  25. package/.next/server/app/api/cron/bulk/route.js.nft.json +1 -1
  26. package/.next/server/app/api/cron/delete/route.js.nft.json +1 -1
  27. package/.next/server/app/api/cron/edit/route.js.nft.json +1 -1
  28. package/.next/server/app/api/cron/job/route.js.nft.json +1 -1
  29. package/.next/server/app/api/cron/jobs/route.js.nft.json +1 -1
  30. package/.next/server/app/api/cron/recipe-installed/route.js.nft.json +1 -1
  31. package/.next/server/app/api/cron/worker/route.js.nft.json +1 -1
  32. package/.next/server/app/api/goals/[id]/promote/route.js.nft.json +1 -1
  33. package/.next/server/app/api/goals/[id]/route.js.nft.json +1 -1
  34. package/.next/server/app/api/goals/route.js.nft.json +1 -1
  35. package/.next/server/app/api/recipes/[id]/route.js.nft.json +1 -1
  36. package/.next/server/app/api/recipes/clone/route.js.nft.json +1 -1
  37. package/.next/server/app/api/recipes/delete/route.js.nft.json +1 -1
  38. package/.next/server/app/api/teams/[teamId]/media-providers/route.js.nft.json +1 -1
  39. package/.next/server/app/api/teams/[teamId]/tickets/assign/route.js.nft.json +1 -1
  40. package/.next/server/app/api/teams/[teamId]/tickets/comment/route.js.nft.json +1 -1
  41. package/.next/server/app/api/teams/[teamId]/tickets/delete/route.js.nft.json +1 -1
  42. package/.next/server/app/api/teams/[teamId]/tickets/move/route.js.nft.json +1 -1
  43. package/.next/server/app/api/teams/[teamId]/tickets/move-to-goals/route.js.nft.json +1 -1
  44. package/.next/server/app/api/teams/file/route.js.nft.json +1 -1
  45. package/.next/server/app/api/teams/files/route.js.nft.json +1 -1
  46. package/.next/server/app/api/teams/memory/route.js.nft.json +1 -1
  47. package/.next/server/app/api/teams/meta/route.js.nft.json +1 -1
  48. package/.next/server/app/api/teams/orchestrator/route.js.nft.json +1 -1
  49. package/.next/server/app/api/teams/plugins/route.js.nft.json +1 -1
  50. package/.next/server/app/api/teams/remove-team/route.js.nft.json +1 -1
  51. package/.next/server/app/api/teams/skills/install/route.js.nft.json +1 -1
  52. package/.next/server/app/api/teams/skills/route.js.nft.json +1 -1
  53. package/.next/server/app/api/teams/workflow-runs/route.js.nft.json +1 -1
  54. package/.next/server/app/api/teams/workflow-templates/route.js.nft.json +1 -1
  55. package/.next/server/app/api/teams/workflows/route.js.nft.json +1 -1
  56. package/.next/server/app/api/tickets/assign/route.js.nft.json +1 -1
  57. package/.next/server/app/api/tickets/assignees/route.js.nft.json +1 -1
  58. package/.next/server/app/api/tickets/move/route.js.nft.json +1 -1
  59. package/.next/server/app/channels.html +2 -2
  60. package/.next/server/app/channels.rsc +2 -2
  61. package/.next/server/app/channels.segments/_full.segment.rsc +2 -2
  62. package/.next/server/app/channels.segments/_head.segment.rsc +1 -1
  63. package/.next/server/app/channels.segments/_index.segment.rsc +1 -1
  64. package/.next/server/app/channels.segments/_tree.segment.rsc +1 -1
  65. package/.next/server/app/channels.segments/channels/__PAGE__.segment.rsc +1 -1
  66. package/.next/server/app/channels.segments/channels.segment.rsc +1 -1
  67. package/.next/server/app/goals/new.html +2 -2
  68. package/.next/server/app/goals/new.rsc +2 -2
  69. package/.next/server/app/goals/new.segments/_full.segment.rsc +2 -2
  70. package/.next/server/app/goals/new.segments/_head.segment.rsc +1 -1
  71. package/.next/server/app/goals/new.segments/_index.segment.rsc +1 -1
  72. package/.next/server/app/goals/new.segments/_tree.segment.rsc +1 -1
  73. package/.next/server/app/goals/new.segments/goals/new/__PAGE__.segment.rsc +1 -1
  74. package/.next/server/app/goals/new.segments/goals/new.segment.rsc +1 -1
  75. package/.next/server/app/goals/new.segments/goals.segment.rsc +1 -1
  76. package/.next/server/app/goals.html +1 -1
  77. package/.next/server/app/goals.rsc +2 -2
  78. package/.next/server/app/goals.segments/_full.segment.rsc +2 -2
  79. package/.next/server/app/goals.segments/_head.segment.rsc +1 -1
  80. package/.next/server/app/goals.segments/_index.segment.rsc +1 -1
  81. package/.next/server/app/goals.segments/_tree.segment.rsc +1 -1
  82. package/.next/server/app/goals.segments/goals/__PAGE__.segment.rsc +1 -1
  83. package/.next/server/app/goals.segments/goals.segment.rsc +1 -1
  84. package/.next/server/app/page.js.nft.json +1 -1
  85. package/.next/server/app/recipes/[id]/page.js.nft.json +1 -1
  86. package/.next/server/app/settings.html +1 -1
  87. package/.next/server/app/settings.rsc +2 -2
  88. package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  89. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  90. package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  91. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  92. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  93. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  94. package/.next/server/app/teams/[teamId]/deliverables/page.js.nft.json +1 -1
  95. package/.next/server/app/teams/[teamId]/runs/[workflowId]/[runId]/page.js.nft.json +1 -1
  96. package/.next/server/app/teams/[teamId]/tickets/[ticket]/page.js.nft.json +1 -1
  97. package/.next/server/app/teams/[teamId]/tickets/page.js.nft.json +1 -1
  98. package/.next/server/app/teams/[teamId]/workflows/[workflowId]/page.js.nft.json +1 -1
  99. package/.next/server/app/teams/[teamId]/workflows/page.js.nft.json +1 -1
  100. package/.next/server/app/tickets/[ticket]/page.js.nft.json +1 -1
  101. package/.next/server/app/tickets/page.js.nft.json +1 -1
  102. package/.next/server/chunks/ssr/[root-of-the-server]__3b880807._.js +1 -1
  103. package/.next/server/chunks/ssr/[root-of-the-server]__3b880807._.js.map +1 -1
  104. package/.next/server/pages/404.html +1 -1
  105. package/.next/server/pages/500.html +2 -2
  106. package/.next/server/server-reference-manifest.js +1 -1
  107. package/.next/server/server-reference-manifest.json +1 -1
  108. package/dist/openclaw/index.mjs +367 -0
  109. package/openclaw/index.ts +32 -18
  110. package/openclaw.plugin.json +2 -2
  111. package/package.json +15 -8
  112. /package/.next/static/{hVuTmEwBY-XkWAfHbqy43 → IT2h_v3OwuOLwfsaG6ygp}/_buildManifest.js +0 -0
  113. /package/.next/static/{hVuTmEwBY-XkWAfHbqy43 → IT2h_v3OwuOLwfsaG6ygp}/_clientMiddlewareManifest.json +0 -0
  114. /package/.next/static/{hVuTmEwBY-XkWAfHbqy43 → IT2h_v3OwuOLwfsaG6ygp}/_ssgManifest.js +0 -0
package/openclaw/index.ts CHANGED
@@ -90,6 +90,22 @@ function parseCookies(req: http.IncomingMessage): Record<string, string> {
90
90
  let server: http.Server | null = null;
91
91
  let startedAt: string | null = null;
92
92
 
93
+ function resolveKitchenRoot() {
94
+ const moduleDir = path.dirname(fileURLToPath(import.meta.url));
95
+ const candidates = [moduleDir, path.resolve(moduleDir, ".."), path.resolve(moduleDir, "../..")];
96
+ for (const candidate of candidates) {
97
+ const packageJsonPath = path.join(candidate, "package.json");
98
+ if (!fs.existsSync(packageJsonPath)) continue;
99
+ try {
100
+ const pkg = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
101
+ if (pkg?.name === "@jiggai/kitchen") return candidate;
102
+ } catch {
103
+ // Keep looking; a malformed package.json should not hide a valid root candidate.
104
+ }
105
+ }
106
+ return path.resolve(moduleDir, "..");
107
+ }
108
+
93
109
  async function startKitchen(api: OpenClawPluginApi, cfg: KitchenConfig) {
94
110
  if (server) return;
95
111
 
@@ -108,7 +124,7 @@ async function startKitchen(api: OpenClawPluginApi, cfg: KitchenConfig) {
108
124
  );
109
125
  }
110
126
 
111
- const rootDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
127
+ const rootDir = resolveKitchenRoot();
112
128
 
113
129
  // Ensure better-sqlite3 native binary is compiled for this platform.
114
130
  // openclaw installs plugins with --ignore-scripts, so node-gyp never runs.
@@ -427,23 +443,21 @@ const kitchenPlugin = {
427
443
  { commands: ["kitchen"] },
428
444
  );
429
445
 
430
- api.registerService({
431
- id: "kitchen",
432
- start: async () => {
433
- if (cfg.enabled === false) return;
434
- try {
435
- await startKitchen(api, cfg);
436
- } catch (e: unknown) {
437
- api.logger.error(`[kitchen] failed to start: ${e instanceof Error ? e.message : String(e)}`);
438
- }
439
- },
440
- stop: async () => {
441
- try {
442
- await stopKitchen(api);
443
- } catch (e: unknown) {
444
- api.logger.error(`[kitchen] failed to stop: ${e instanceof Error ? e.message : String(e)}`);
445
- }
446
- },
446
+ api.on("gateway_start", async () => {
447
+ if (cfg.enabled === false) return;
448
+ try {
449
+ await startKitchen(api, cfg);
450
+ } catch (e: unknown) {
451
+ api.logger.error(`[kitchen] failed to start: ${e instanceof Error ? e.message : String(e)}`);
452
+ }
453
+ });
454
+
455
+ api.on("gateway_stop", async () => {
456
+ try {
457
+ await stopKitchen(api);
458
+ } catch (e: unknown) {
459
+ api.logger.error(`[kitchen] failed to stop: ${e instanceof Error ? e.message : String(e)}`);
460
+ }
447
461
  });
448
462
  },
449
463
  };
@@ -2,7 +2,7 @@
2
2
  "id": "kitchen",
3
3
  "name": "ClawKitchen",
4
4
  "description": "Local UI for managing OpenClaw recipes, teams, agents, cron jobs, and skills.",
5
- "version": "0.5.14",
5
+ "version": "0.5.15",
6
6
  "configSchema": {
7
7
  "type": "object",
8
8
  "additionalProperties": false,
@@ -74,5 +74,5 @@
74
74
  "help": "on: require Basic auth; local: allow localhost unauthenticated; off: disable auth (not recommended)."
75
75
  }
76
76
  },
77
- "main": "openclaw/index.ts"
77
+ "main": "dist/openclaw/index.mjs"
78
78
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@jiggai/kitchen",
3
- "version": "0.5.14",
4
- "main": "openclaw/index.ts",
3
+ "version": "0.5.15",
4
+ "main": "dist/openclaw/index.mjs",
5
5
  "description": "ClawKitchen - Web-based dashboard for OpenClaw agent teams, workflows, and automation",
6
6
  "author": "@rjdjohnston · rjdjohnston",
7
7
  "license": "Apache-2.0",
@@ -23,11 +23,14 @@
23
23
  ],
24
24
  "compat": {
25
25
  "pluginApi": ">=1.0.0",
26
- "pluginApiRange": ">=2026.3"
26
+ "pluginApiRange": ">=2026.5"
27
27
  },
28
28
  "build": {
29
- "openclawVersion": "2026.3.28"
30
- }
29
+ "openclawVersion": "2026.5.7"
30
+ },
31
+ "runtimeExtensions": [
32
+ "./dist/openclaw/index.mjs"
33
+ ]
31
34
  },
32
35
  "scripts": {
33
36
  "dev": "next dev",
@@ -43,15 +46,18 @@
43
46
  "refactor:report": "node scripts/refactor-report.mjs",
44
47
  "smoke:goals": "node scripts/goals-smoke.mjs",
45
48
  "prepare": "husky || true",
46
- "prepack": "npm run -s sync:plugin-version && npm run -s check:plugin-version",
49
+ "prepack": "npm run -s build:plugin && npm run -s sync:plugin-version && npm run -s check:plugin-version",
47
50
  "sync:plugin-version": "node scripts/sync-openclaw-plugin-version.mjs",
48
51
  "check:plugin-version": "node scripts/check-openclaw-plugin-version.mjs",
49
- "prepublishOnly": "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
+ "build:plugin": "esbuild openclaw/index.ts --bundle --platform=node --format=esm --target=node20 --outfile=dist/openclaw/index.mjs --external:openclaw/plugin-sdk --external:next",
54
+ "verify:runtime-package": "node scripts/verify-runtime-package.mjs"
50
55
  },
51
56
  "publishConfig": {
52
57
  "access": "public"
53
58
  },
54
59
  "files": [
60
+ "dist/openclaw/",
55
61
  "openclaw/",
56
62
  "openclaw.plugin.json",
57
63
  "README.md",
@@ -102,7 +108,8 @@
102
108
  "tailwindcss": "^4",
103
109
  "typescript": "5.9.3",
104
110
  "vite-tsconfig-paths": "^6.1.1",
105
- "vitest": "^4.0.18"
111
+ "vitest": "^4.0.18",
112
+ "esbuild": "^0.27.3"
106
113
  },
107
114
  "lint-staged": {
108
115
  "*.{ts,tsx}": "eslint --fix"