openplanr 2.5.0 → 2.6.1

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 (73) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/CONTRIBUTING.md +2 -31
  3. package/dist/services/codex-plugin-service.d.ts +2 -2
  4. package/dist/services/codex-plugin-service.d.ts.map +1 -1
  5. package/dist/services/codex-plugin-service.js +7 -7
  6. package/dist/services/codex-plugin-service.js.map +1 -1
  7. package/lib/host-packages/adapter-registry.json +5 -5
  8. package/lib/host-packages/capability-map.json +1 -1
  9. package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
  10. package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +1 -1
  11. package/lib/host-packages/claude/openplanr/.openplanr-content.json +46 -14
  12. package/lib/host-packages/claude/openplanr/skills/design/openplanr.skill.json +22 -0
  13. package/lib/host-packages/claude/openplanr/skills/design/scripts/design.mjs +69 -16
  14. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  15. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  16. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  17. package/lib/host-packages/claude/openplanr/skills/design-loop/openplanr.skill.json +22 -0
  18. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design.mjs +69 -16
  19. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  20. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  21. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  22. package/lib/host-packages/claude/openplanr/skills/design-review/openplanr.skill.json +22 -0
  23. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design.mjs +69 -16
  24. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  25. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  26. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  27. package/lib/host-packages/claude/openplanr/skills/plan/openplanr.skill.json +22 -0
  28. package/lib/host-packages/claude/openplanr/skills/plan/scripts/design.mjs +69 -16
  29. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  30. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  31. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  32. package/lib/host-packages/cursor/openplanr/.openplanr-content.json +42 -10
  33. package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
  34. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design.mjs +69 -16
  35. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  36. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  37. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  38. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design.mjs +69 -16
  39. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  40. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  41. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  42. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design.mjs +69 -16
  43. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  44. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  45. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  46. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design.mjs +69 -16
  47. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  48. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  49. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  50. package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
  51. package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +1 -1
  52. package/lib/host-packages/openai/openplanr/.openplanr-content.json +46 -14
  53. package/lib/host-packages/openai/openplanr/skills/design/openplanr.skill.json +22 -0
  54. package/lib/host-packages/openai/openplanr/skills/design/scripts/design.mjs +69 -16
  55. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  56. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  57. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  58. package/lib/host-packages/openai/openplanr/skills/design-loop/openplanr.skill.json +22 -0
  59. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design.mjs +69 -16
  60. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  61. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  62. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  63. package/lib/host-packages/openai/openplanr/skills/design-review/openplanr.skill.json +22 -0
  64. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design.mjs +69 -16
  65. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  66. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  67. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  68. package/lib/host-packages/openai/openplanr/skills/plan/openplanr.skill.json +22 -0
  69. package/lib/host-packages/openai/openplanr/skills/plan/scripts/design.mjs +69 -16
  70. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  71. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  72. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  73. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.6.1
4
+ ### Patch Changes
5
+
6
+ - f1493eb: Correct Codex inspection errors to identify the CLI's bundled host package and the setup repair command.
7
+
8
+ Make professional-skill catalog reads work in an isolated pipeline installation by defaulting to its bundled compatibility snapshots. Current-source inspection and evaluation now require an explicit source root instead of reading retired package host trees.
9
+
10
+ Build pipeline compatibility projections from canonical workspace sources during packaging, preserving the self-contained published package. Validate generated archive contents against the existing projection manifests.
11
+
12
+ ## 2.6.0
13
+ ### Minor Changes
14
+
15
+ - 9924a2d: Add the five-step Design Handoff Center, including server-projected readiness,
16
+ review resolution, implementation package composition, exact owner approval,
17
+ and an explicit zero-effect Continue to Plan handoff.
18
+
3
19
  ## 2.5.0
4
20
  ### Minor Changes
5
21
 
package/CONTRIBUTING.md CHANGED
@@ -1,33 +1,4 @@
1
1
  # Contributing to the OpenPlanr CLI
2
2
 
3
- The `openplanr` package is developed in the
4
- [OpenPlanr monorepo](https://github.com/openplanr/OpenPlanr). Follow the
5
- [root contribution guide](https://github.com/openplanr/OpenPlanr/blob/main/CONTRIBUTING.md)
6
- and [Code of Conduct](https://github.com/openplanr/OpenPlanr/blob/main/CODE_OF_CONDUCT.md).
7
-
8
- Clone the full repository and run these commands from its root:
9
-
10
- ```bash
11
- npm ci
12
- npm run generate
13
- npm run build
14
- npm run test:focused
15
- ```
16
-
17
- Do not treat an installed npm package as a standalone development checkout.
18
- CLI command registration lives under `packages/cli/src/cli/`; services and
19
- package tests live under `packages/cli/src/services/` and `packages/cli/tests/`.
20
- Canonical Protocol, domain, and skill sources live in their owning workspaces.
21
- Edit those sources before regenerating their compatibility projections.
22
-
23
- For a CLI change, run the relevant focused checks, then package tests and lint:
24
-
25
- ```bash
26
- npm run test --workspace=openplanr
27
- npm run lint --workspace=openplanr
28
- ```
29
-
30
- The root guide describes command-catalog regeneration, full workspace checks,
31
- and isolated packed-package verification. Submit a focused pull request with the
32
- behavior change, regression coverage, and any limitations. Report vulnerabilities
33
- using the [security policy](https://github.com/openplanr/OpenPlanr/blob/main/SECURITY.md).
3
+ The OpenPlanr repository [contribution guide](https://github.com/openplanr/OpenPlanr/blob/main/CONTRIBUTING.md)
4
+ applies to this package. Follow that document for the current policy and instructions.
@@ -22,8 +22,8 @@ export interface CodexPluginInspection {
22
22
  operations: CodexPluginOperation[];
23
23
  error?: string;
24
24
  }
25
- export declare function inspectCodexPluginIntegration(pipelineRoot: string, desiredMode: 'direct' | 'unified-plugin' | 'project-rule', previousMode: 'direct' | 'unified-plugin' | 'project-rule' | undefined, runner?: CodexCommandRunner): CodexPluginInspection;
26
- export declare function applyCodexPluginIntegration(pipelineRoot: string, inspection: CodexPluginInspection, runner?: CodexCommandRunner): {
25
+ export declare function inspectCodexPluginIntegration(hostPackageRoot: string, desiredMode: 'direct' | 'unified-plugin' | 'project-rule', previousMode: 'direct' | 'unified-plugin' | 'project-rule' | undefined, runner?: CodexCommandRunner): CodexPluginInspection;
26
+ export declare function applyCodexPluginIntegration(hostPackageRoot: string, inspection: CodexPluginInspection, runner?: CodexCommandRunner): {
27
27
  operations: CodexPluginOperation[];
28
28
  restartRequired: boolean;
29
29
  };
@@ -1 +1 @@
1
- {"version":3,"file":"codex-plugin-service.d.ts","sourceRoot":"","sources":["../../src/services/codex-plugin-service.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK;IACnD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,iBAAiB,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC,CAAC;AAEH,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA0CD,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,QAAQ,GAAG,gBAAgB,GAAG,cAAc,EACzD,YAAY,EAAE,QAAQ,GAAG,gBAAgB,GAAG,cAAc,GAAG,SAAS,EACtE,MAAM,GAAE,kBAAkC,GACzC,qBAAqB,CAuKvB;AAED,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,qBAAqB,EACjC,MAAM,GAAE,kBAAkC,GACzC;IAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,CAalE"}
1
+ {"version":3,"file":"codex-plugin-service.d.ts","sourceRoot":"","sources":["../../src/services/codex-plugin-service.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK;IACnD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,iBAAiB,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC,CAAC;AAEH,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA0CD,wBAAgB,6BAA6B,CAC3C,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,QAAQ,GAAG,gBAAgB,GAAG,cAAc,EACzD,YAAY,EAAE,QAAQ,GAAG,gBAAgB,GAAG,cAAc,GAAG,SAAS,EACtE,MAAM,GAAE,kBAAkC,GACzC,qBAAqB,CAwKvB;AAED,wBAAgB,2BAA2B,CACzC,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,qBAAqB,EACjC,MAAM,GAAE,kBAAkC,GACzC;IAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,CAalE"}
@@ -36,8 +36,8 @@ function installedRows(value) {
36
36
  const installed = value?.installed;
37
37
  return Array.isArray(installed) ? installed : [];
38
38
  }
39
- export function inspectCodexPluginIntegration(pipelineRoot, desiredMode, previousMode, runner = defaultRunner) {
40
- const marketplacePath = path.join(pipelineRoot, '.claude-plugin', 'marketplace.json');
39
+ export function inspectCodexPluginIntegration(hostPackageRoot, desiredMode, previousMode, runner = defaultRunner) {
40
+ const marketplacePath = path.join(hostPackageRoot, '.claude-plugin', 'marketplace.json');
41
41
  if (!existsSync(marketplacePath)) {
42
42
  return {
43
43
  available: false,
@@ -48,7 +48,7 @@ export function inspectCodexPluginIntegration(pipelineRoot, desiredMode, previou
48
48
  installedVersion: null,
49
49
  duplicates: [],
50
50
  operations: [],
51
- error: 'The installed pipeline package does not contain its OpenPlanr marketplace.',
51
+ error: 'The CLI bundled Codex host package is missing its OpenPlanr marketplace. Run planr setup --runtime codex to repair it.',
52
52
  };
53
53
  }
54
54
  const marketplace = JSON.parse(readFileSync(marketplacePath, 'utf8'));
@@ -65,7 +65,7 @@ export function inspectCodexPluginIntegration(pipelineRoot, desiredMode, previou
65
65
  installedVersion: null,
66
66
  duplicates: [],
67
67
  operations: [],
68
- error: `The installed pipeline marketplace does not declare ${HOST_PLUGIN_NAME}.`,
68
+ error: `The CLI bundled Codex host marketplace does not declare ${HOST_PLUGIN_NAME}. Run planr setup --runtime codex to repair it.`,
69
69
  };
70
70
  const version = runner(['--version']);
71
71
  if (version.error || version.status !== 0)
@@ -85,7 +85,7 @@ export function inspectCodexPluginIntegration(pipelineRoot, desiredMode, previou
85
85
  const configured = (listedMarketplaces.marketplaces ?? []).find(({ name }) => name === marketplaceName);
86
86
  if (configured) {
87
87
  const configuredRoot = canonicalRoot(String(configured.root ?? configured.marketplaceSource?.source ?? ''));
88
- const expectedRoot = canonicalRoot(pipelineRoot);
88
+ const expectedRoot = canonicalRoot(hostPackageRoot);
89
89
  if (configuredRoot !== expectedRoot)
90
90
  throw new Error(`Codex marketplace ${marketplaceName} points to ${configuredRoot}, not ${expectedRoot}.`);
91
91
  }
@@ -179,12 +179,12 @@ export function inspectCodexPluginIntegration(pipelineRoot, desiredMode, previou
179
179
  };
180
180
  }
181
181
  }
182
- export function applyCodexPluginIntegration(pipelineRoot, inspection, runner = defaultRunner) {
182
+ export function applyCodexPluginIntegration(hostPackageRoot, inspection, runner = defaultRunner) {
183
183
  if (!inspection.available || inspection.error)
184
184
  throw new Error(inspection.error ?? 'Codex plugin integration is unavailable.');
185
185
  for (const operation of inspection.operations) {
186
186
  const args = operation.kind === 'add-marketplace'
187
- ? ['plugin', 'marketplace', 'add', pipelineRoot, '--json']
187
+ ? ['plugin', 'marketplace', 'add', hostPackageRoot, '--json']
188
188
  : operation.kind === 'install'
189
189
  ? ['plugin', 'add', operation.id, '--json']
190
190
  : ['plugin', 'remove', operation.id, '--json'];
@@ -1 +1 @@
1
- {"version":3,"file":"codex-plugin-service.js","sourceRoot":"","sources":["../../src/services/codex-plugin-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-plugin-service.js","sourceRoot":"","sources":["../../src/services/codex-plugin-service.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,12 @@
2
2
  "kind": "host-native-adapter-registry",
3
3
  "schemaVersion": "1.0.0",
4
4
  "protocolVersion": "1.8.0",
5
- "pipelineVersion": "0.48.0",
6
- "pluginVersion": "2.5.0",
5
+ "pipelineVersion": "0.49.1",
6
+ "pluginVersion": "2.6.1",
7
7
  "adapters": [
8
8
  {
9
9
  "id": "claude-code",
10
- "version": "2.5.0",
10
+ "version": "2.6.1",
11
11
  "capabilityLevel": "product",
12
12
  "installScopes": [
13
13
  "user",
@@ -19,7 +19,7 @@
19
19
  },
20
20
  {
21
21
  "id": "codex",
22
- "version": "2.5.0",
22
+ "version": "2.6.1",
23
23
  "capabilityLevel": "product",
24
24
  "installScopes": [
25
25
  "user",
@@ -31,7 +31,7 @@
31
31
  },
32
32
  {
33
33
  "id": "cursor",
34
- "version": "2.5.0",
34
+ "version": "2.6.1",
35
35
  "capabilityLevel": "workflow",
36
36
  "installScopes": [
37
37
  "project"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "kind": "openplanr-capability-map",
3
3
  "schemaVersion": "1.0.0",
4
- "pluginVersion": "2.5.0",
4
+ "pluginVersion": "2.6.1",
5
5
  "families": [
6
6
  {
7
7
  "id": "planning",
@@ -5,14 +5,14 @@
5
5
  "name": "AsemDevs"
6
6
  },
7
7
  "metadata": {
8
- "version": "2.5.0",
8
+ "version": "2.6.1",
9
9
  "description": "Generated local OpenPlanr package."
10
10
  },
11
11
  "plugins": [
12
12
  {
13
13
  "name": "planr",
14
14
  "source": "./openplanr",
15
- "version": "2.5.0",
15
+ "version": "2.6.1",
16
16
  "description": "Host-native OpenPlanr skills and role agents for Claude Code.",
17
17
  "strict": true
18
18
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "planr",
3
- "version": "2.5.0",
3
+ "version": "2.6.1",
4
4
  "description": "Host-native OpenPlanr planning, delivery, review, design, and operating skills.",
5
5
  "author": {
6
6
  "name": "AsemDevs"
@@ -8,7 +8,7 @@
8
8
  "files": [
9
9
  {
10
10
  "path": ".claude-plugin/plugin.json",
11
- "digest": "sha256:b3f1e63831be935ab83e7cccd226ed6c4f8f0b08119d359081b7cce06dc716dd"
11
+ "digest": "sha256:8064b98946ccfb3736a555df6a51f8b26edfcc094a562f598331b0d00a082b9f"
12
12
  },
13
13
  {
14
14
  "path": "agents/planr-backend.md",
@@ -372,7 +372,7 @@
372
372
  },
373
373
  {
374
374
  "path": "skills/design-loop/openplanr.skill.json",
375
- "digest": "sha256:cecdbd16879f58de70d1158b776fb47ac5520e22c2d6c0d01b3c6b8c4c843ced"
375
+ "digest": "sha256:e74d98bbf31c030727e6cf2bd306b760d1bba2449bbb247148fe6c1dbc684f7b"
376
376
  },
377
377
  {
378
378
  "path": "skills/design-loop/references/craft.md",
@@ -424,7 +424,7 @@
424
424
  },
425
425
  {
426
426
  "path": "skills/design-loop/scripts/design.mjs",
427
- "digest": "sha256:4374afc1003a4869cc423a093950b5d192a63df314329ee0e30ea423d163560b"
427
+ "digest": "sha256:3fec9a1d47bc41c0caf4909a2c4b9d00205da630c015a46f6921caf2a4d7a2d2"
428
428
  },
429
429
  {
430
430
  "path": "skills/design-loop/scripts/runtime/notices/entities.txt",
@@ -444,7 +444,15 @@
444
444
  },
445
445
  {
446
446
  "path": "skills/design-loop/scripts/runtime/packages/design/templates/studio/enhancements.js",
447
- "digest": "sha256:8f2eea1ed15762799c999745ccfd8f340183ddb12c91fc8224e09ce7ca7e2c97"
447
+ "digest": "sha256:e967e9a622018a3bfdd52751ecfa6e842dbbf1922f573f3395a2bf29ca028589"
448
+ },
449
+ {
450
+ "path": "skills/design-loop/scripts/runtime/packages/design/templates/studio/handoff-center.css",
451
+ "digest": "sha256:2f972f98d16723fd19989df349f6342e6eae951820e53ca84f310b433ef83b48"
452
+ },
453
+ {
454
+ "path": "skills/design-loop/scripts/runtime/packages/design/templates/studio/handoff-center.js",
455
+ "digest": "sha256:012f648cf3936be649ac5f4935412a91489c8f90e076400dc19fbc6ebbf38b21"
448
456
  },
449
457
  {
450
458
  "path": "skills/design-loop/scripts/runtime/packages/design/templates/studio/share.css",
@@ -552,7 +560,7 @@
552
560
  },
553
561
  {
554
562
  "path": "skills/design-review/openplanr.skill.json",
555
- "digest": "sha256:6ac49ca8fd2f709aff25f192f55e9c530b95715a626af01afef2ed1d2170e340"
563
+ "digest": "sha256:388904d851b0da0e6bc9171db229f80facca68a417bb4e458bf5eebf6cd12be3"
556
564
  },
557
565
  {
558
566
  "path": "skills/design-review/references/craft.md",
@@ -604,7 +612,7 @@
604
612
  },
605
613
  {
606
614
  "path": "skills/design-review/scripts/design.mjs",
607
- "digest": "sha256:4374afc1003a4869cc423a093950b5d192a63df314329ee0e30ea423d163560b"
615
+ "digest": "sha256:3fec9a1d47bc41c0caf4909a2c4b9d00205da630c015a46f6921caf2a4d7a2d2"
608
616
  },
609
617
  {
610
618
  "path": "skills/design-review/scripts/runtime/notices/entities.txt",
@@ -624,7 +632,15 @@
624
632
  },
625
633
  {
626
634
  "path": "skills/design-review/scripts/runtime/packages/design/templates/studio/enhancements.js",
627
- "digest": "sha256:8f2eea1ed15762799c999745ccfd8f340183ddb12c91fc8224e09ce7ca7e2c97"
635
+ "digest": "sha256:e967e9a622018a3bfdd52751ecfa6e842dbbf1922f573f3395a2bf29ca028589"
636
+ },
637
+ {
638
+ "path": "skills/design-review/scripts/runtime/packages/design/templates/studio/handoff-center.css",
639
+ "digest": "sha256:2f972f98d16723fd19989df349f6342e6eae951820e53ca84f310b433ef83b48"
640
+ },
641
+ {
642
+ "path": "skills/design-review/scripts/runtime/packages/design/templates/studio/handoff-center.js",
643
+ "digest": "sha256:012f648cf3936be649ac5f4935412a91489c8f90e076400dc19fbc6ebbf38b21"
628
644
  },
629
645
  {
630
646
  "path": "skills/design-review/scripts/runtime/packages/design/templates/studio/share.css",
@@ -732,7 +748,7 @@
732
748
  },
733
749
  {
734
750
  "path": "skills/design/openplanr.skill.json",
735
- "digest": "sha256:83457207042925d16148dd28054ef69f00c4358136da7eaadc286f01bc6a0797"
751
+ "digest": "sha256:b6fb1882f9147414964469f6e3b8089c2ca8d55c0f4a7f92e66b5a107db68051"
736
752
  },
737
753
  {
738
754
  "path": "skills/design/references/craft.md",
@@ -784,7 +800,7 @@
784
800
  },
785
801
  {
786
802
  "path": "skills/design/scripts/design.mjs",
787
- "digest": "sha256:4374afc1003a4869cc423a093950b5d192a63df314329ee0e30ea423d163560b"
803
+ "digest": "sha256:3fec9a1d47bc41c0caf4909a2c4b9d00205da630c015a46f6921caf2a4d7a2d2"
788
804
  },
789
805
  {
790
806
  "path": "skills/design/scripts/runtime/notices/entities.txt",
@@ -804,7 +820,15 @@
804
820
  },
805
821
  {
806
822
  "path": "skills/design/scripts/runtime/packages/design/templates/studio/enhancements.js",
807
- "digest": "sha256:8f2eea1ed15762799c999745ccfd8f340183ddb12c91fc8224e09ce7ca7e2c97"
823
+ "digest": "sha256:e967e9a622018a3bfdd52751ecfa6e842dbbf1922f573f3395a2bf29ca028589"
824
+ },
825
+ {
826
+ "path": "skills/design/scripts/runtime/packages/design/templates/studio/handoff-center.css",
827
+ "digest": "sha256:2f972f98d16723fd19989df349f6342e6eae951820e53ca84f310b433ef83b48"
828
+ },
829
+ {
830
+ "path": "skills/design/scripts/runtime/packages/design/templates/studio/handoff-center.js",
831
+ "digest": "sha256:012f648cf3936be649ac5f4935412a91489c8f90e076400dc19fbc6ebbf38b21"
808
832
  },
809
833
  {
810
834
  "path": "skills/design/scripts/runtime/packages/design/templates/studio/share.css",
@@ -1000,7 +1024,7 @@
1000
1024
  },
1001
1025
  {
1002
1026
  "path": "skills/plan/openplanr.skill.json",
1003
- "digest": "sha256:a1e090540db3a4edc2694e1a24c6fc0af85838eb7ee3138cdc53f4be69803479"
1027
+ "digest": "sha256:e91d221a286bd91b3b7a2343cea8c73564cb3401b968854d38bcf8a9790131f1"
1004
1028
  },
1005
1029
  {
1006
1030
  "path": "skills/plan/references/artifact-contract.md",
@@ -1024,7 +1048,7 @@
1024
1048
  },
1025
1049
  {
1026
1050
  "path": "skills/plan/scripts/design.mjs",
1027
- "digest": "sha256:4374afc1003a4869cc423a093950b5d192a63df314329ee0e30ea423d163560b"
1051
+ "digest": "sha256:3fec9a1d47bc41c0caf4909a2c4b9d00205da630c015a46f6921caf2a4d7a2d2"
1028
1052
  },
1029
1053
  {
1030
1054
  "path": "skills/plan/scripts/planning-ids.mjs",
@@ -1048,7 +1072,15 @@
1048
1072
  },
1049
1073
  {
1050
1074
  "path": "skills/plan/scripts/runtime/packages/design/templates/studio/enhancements.js",
1051
- "digest": "sha256:8f2eea1ed15762799c999745ccfd8f340183ddb12c91fc8224e09ce7ca7e2c97"
1075
+ "digest": "sha256:e967e9a622018a3bfdd52751ecfa6e842dbbf1922f573f3395a2bf29ca028589"
1076
+ },
1077
+ {
1078
+ "path": "skills/plan/scripts/runtime/packages/design/templates/studio/handoff-center.css",
1079
+ "digest": "sha256:2f972f98d16723fd19989df349f6342e6eae951820e53ca84f310b433ef83b48"
1080
+ },
1081
+ {
1082
+ "path": "skills/plan/scripts/runtime/packages/design/templates/studio/handoff-center.js",
1083
+ "digest": "sha256:012f648cf3936be649ac5f4935412a91489c8f90e076400dc19fbc6ebbf38b21"
1052
1084
  },
1053
1085
  {
1054
1086
  "path": "skills/plan/scripts/runtime/packages/design/templates/studio/share.css",
@@ -1259,5 +1291,5 @@
1259
1291
  "digest": "sha256:53698324b62f43b672ce8fe1654c526c96fb202e313442f09c6fc1e72268677e"
1260
1292
  }
1261
1293
  ],
1262
- "contentDigest": "sha256:dc8f46efa9c9359caa6e9f53aa67e1468ac6e94b46ea628b149578453f22a668"
1294
+ "contentDigest": "sha256:46246b06dfa5a025cbb2c8f0468e0bf81c5ab796b42b714d5ae85d1a05149f0f"
1263
1295
  }
@@ -198,6 +198,28 @@
198
198
  "cursor"
199
199
  ]
200
200
  },
201
+ {
202
+ "path": "scripts/runtime/packages/design/templates/studio/handoff-center.css",
203
+ "kind": "asset",
204
+ "executable": false,
205
+ "hosts": [
206
+ "claude-code",
207
+ "codex",
208
+ "chatgpt",
209
+ "cursor"
210
+ ]
211
+ },
212
+ {
213
+ "path": "scripts/runtime/packages/design/templates/studio/handoff-center.js",
214
+ "kind": "asset",
215
+ "executable": false,
216
+ "hosts": [
217
+ "claude-code",
218
+ "codex",
219
+ "chatgpt",
220
+ "cursor"
221
+ ]
222
+ },
201
223
  {
202
224
  "path": "scripts/runtime/packages/design/templates/studio/share.css",
203
225
  "kind": "asset",
@@ -3,7 +3,7 @@
3
3
  // packages/design/lib/design/utility.mjs
4
4
  import { spawn } from "node:child_process";
5
5
  import { existsSync as existsSync12, mkdirSync as mkdirSync9, readFileSync as readFileSync17, realpathSync as realpathSync7, writeFileSync as writeFileSync9 } from "node:fs";
6
- import { dirname as dirname14, join as join13, resolve as resolve7 } from "node:path";
6
+ import { dirname as dirname14, join as join13, resolve as resolve8 } from "node:path";
7
7
  import { fileURLToPath as fileURLToPath3 } from "node:url";
8
8
 
9
9
  // packages/design/lib/design/document.mjs
@@ -354,11 +354,11 @@ function createArtifactBridgeTools(document2, window2) {
354
354
  const outputWidth = Math.max(1, Math.round(width * scale)), outputHeight = Math.max(1, Math.round(height * scale));
355
355
  const svg = '<svg xmlns="http://www.w3.org/2000/svg" width="' + outputWidth + '" height="' + outputHeight + '" viewBox="0 0 ' + width + " " + height + '"><foreignObject width="' + width + '" height="' + height + '">' + markup + "</foreignObject></svg>";
356
356
  image = new Image();
357
- await new Promise((resolve8, reject) => {
357
+ await new Promise((resolve9, reject) => {
358
358
  const timer = setTimeout(() => reject(new Error("Thumbnail capture timed out.")), Math.max(1, deadline - Date.now()));
359
359
  image.onload = () => {
360
360
  clearTimeout(timer);
361
- resolve8();
361
+ resolve9();
362
362
  };
363
363
  image.onerror = () => {
364
364
  clearTimeout(timer);
@@ -13081,12 +13081,14 @@ ${shellMarkup}
13081
13081
  }
13082
13082
 
13083
13083
  // packages/design/lib/design/studio-render.mjs
13084
- var DESIGN_STUDIO_VERSION = "1.8.5";
13084
+ var DESIGN_STUDIO_VERSION = "1.9.0";
13085
13085
  var DESIGN_STUDIO_ASSETS = Object.freeze({
13086
13086
  style: "templates/studio/studio.css",
13087
13087
  runtime: "templates/studio/studio.js",
13088
13088
  enhancementsStyle: "templates/studio/enhancements.css",
13089
- enhancementsRuntime: "templates/studio/enhancements.js"
13089
+ enhancementsRuntime: "templates/studio/enhancements.js",
13090
+ handoffCenterStyle: "templates/studio/handoff-center.css",
13091
+ handoffCenterRuntime: "templates/studio/handoff-center.js"
13090
13092
  });
13091
13093
  function applyDesignStudioTheme(preference) {
13092
13094
  if (!preference) {
@@ -13543,8 +13545,8 @@ function renderDesignStudio(input = {}, options = {}) {
13543
13545
  return renderDesignStudioMarkup({ ...input, entries: input.entries ?? createDesignStudioEntries(input.document, input.envelope) }, {
13544
13546
  ...options,
13545
13547
  renderShell: renderArtifactShellDocument,
13546
- style: ["studio.css", "enhancements.css"].map((file) => readFileSync7(new URL(file, templateRoot), "utf8")).join("\n"),
13547
- runtime: renderDesignReviewExportSource() + "\n" + ["studio.js", "enhancements.js"].map((file) => readFileSync7(new URL(file, templateRoot), "utf8")).join("\n")
13548
+ style: ["studio.css", "enhancements.css", "handoff-center.css"].map((file) => readFileSync7(new URL(file, templateRoot), "utf8")).join("\n"),
13549
+ runtime: renderDesignReviewExportSource() + "\n" + ["studio.js", "enhancements.js", "handoff-center.js"].map((file) => readFileSync7(new URL(file, templateRoot), "utf8")).join("\n")
13548
13550
  });
13549
13551
  }
13550
13552
 
@@ -13827,7 +13829,7 @@ function designRendererRevision() {
13827
13829
  json({
13828
13830
  version: DESIGN_RENDERER_VERSION,
13829
13831
  stage: hash(stageRuntimeBytes()),
13830
- assets: ["studio.css", "studio.js", "enhancements.css", "enhancements.js"].filter((name) => existsSync3(new URL(`../../templates/studio/${name}`, new URL("./runtime/packages/design/lib/design/document.mjs", import.meta.url).href))).map(
13832
+ assets: ["studio.css", "studio.js", "enhancements.css", "enhancements.js", "handoff-center.css", "handoff-center.js"].filter((name) => existsSync3(new URL(`../../templates/studio/${name}`, new URL("./runtime/packages/design/lib/design/document.mjs", import.meta.url).href))).map(
13831
13833
  (name) => hash(
13832
13834
  readFileSync8(
13833
13835
  new URL(`../../templates/studio/${name}`, new URL("./runtime/packages/design/lib/design/document.mjs", import.meta.url).href)
@@ -13994,7 +13996,7 @@ ${errors.join("\n")}`);
13994
13996
 
13995
13997
  // packages/design/lib/design/review.mjs
13996
13998
  import { existsSync as existsSync11, readFileSync as readFileSync16 } from "node:fs";
13997
- import { dirname as dirname13, join as join12 } from "node:path";
13999
+ import { dirname as dirname13, join as join12, relative as relative4, resolve as resolve7 } from "node:path";
13998
14000
 
13999
14001
  // packages/artifact/lib/artifact/import.mjs
14000
14002
  import {
@@ -18363,6 +18365,52 @@ function currentImplementationBasis(file, env) {
18363
18365
  }
18364
18366
  };
18365
18367
  }
18368
+ function proposeImplementationPackage(file, env) {
18369
+ const current = currentDesign(file);
18370
+ const basis = currentImplementationBasis(file, env);
18371
+ const repository = projectRoot(current.root);
18372
+ const paths = [.../* @__PURE__ */ new Set([
18373
+ designSpecPath(current.root),
18374
+ ...(current.sourceFiles ?? []).map((path) => resolve7(current.root, path))
18375
+ ])].filter((path) => existsSync11(path));
18376
+ const sources = paths.map((path, index) => {
18377
+ const logicalPath2 = relative4(repository, path).replaceAll("\\", "/");
18378
+ const extension = logicalPath2.split(".").pop()?.toLowerCase();
18379
+ return {
18380
+ id: `SRC-${String(index + 1).padStart(3, "0")}`,
18381
+ kind: path === designSpecPath(current.root) ? "design-specification" : extension === "html" ? "screen" : ["css", "json"].includes(extension) ? "token" : "component",
18382
+ path: logicalPath2,
18383
+ revision: basis.sourceRevision,
18384
+ digest: `sha256:${hash(readFileSync16(path))}`
18385
+ };
18386
+ });
18387
+ const sourceByPath = new Map(sources.map((source) => [source.path, source.id]));
18388
+ const sourceId = (path) => sourceByPath.get(relative4(repository, resolve7(current.root, path)).replaceAll("\\", "/"));
18389
+ const selected = current.document.variants.find((variant) => variant.id === current.document.selectedVariant);
18390
+ const requirements = current.document.screens.map((screen) => {
18391
+ const authored = selected?.sources?.[screen.id] ?? screen.source;
18392
+ const refs = [authored?.html, ...authored?.styles ?? [], ...authored?.scripts ?? []].map(sourceId).filter(Boolean);
18393
+ return {
18394
+ kind: "behavior",
18395
+ statement: `${screen.title}: ${screen.description || "Implement the approved screen behavior and states."}`,
18396
+ sourceRefs: refs.length ? refs : [sources[0].id],
18397
+ verification: current.document.frames.map((frame) => `${screen.title} matches the approved ${frame.label} frame at ${frame.width} \xD7 ${frame.height}.`)
18398
+ };
18399
+ });
18400
+ const allRefs = sources.map((source) => source.id);
18401
+ requirements.push({
18402
+ kind: "accessibility",
18403
+ statement: "Preserve the approved interaction semantics, keyboard path, focus behavior and readable status communication.",
18404
+ sourceRefs: allRefs,
18405
+ verification: ["Keyboard-only use, visible focus, screen-reader labels and status announcements pass on every implemented screen."]
18406
+ });
18407
+ return {
18408
+ id: `${current.document.id}-implementation`,
18409
+ title: `${current.document.title} implementation package`,
18410
+ sources,
18411
+ requirements
18412
+ };
18413
+ }
18366
18414
  async function persistDesignTaste(current, state) {
18367
18415
  const path = join12(
18368
18416
  projectRoot(current.root),
@@ -18585,7 +18633,12 @@ ${renderArtifactParentRuntime({ ...options, adapterRuntimeUrl: `${base}api/desig
18585
18633
  const unlock = await acquireStartLock(join12(design.root, ".design/render.lock"));
18586
18634
  try {
18587
18635
  const root = dirname13(designSpecPath(design.root));
18588
- respond(res, 200, { ok: true, draft: readImplementationHandoffDraft(root), ...readImplementationHandoffLifecycle(root), approvalPreview: previewImplementationHandoffApproval(root) });
18636
+ let proposal = null;
18637
+ try {
18638
+ proposal = proposeImplementationPackage(file, env);
18639
+ } catch {
18640
+ }
18641
+ respond(res, 200, { ok: true, draft: readImplementationHandoffDraft(root), ...readImplementationHandoffLifecycle(root), approvalPreview: previewImplementationHandoffApproval(root), proposal });
18589
18642
  } finally {
18590
18643
  unlock();
18591
18644
  }
@@ -19066,7 +19119,7 @@ function verifyDesignDocument(file, report) {
19066
19119
  const images = (Array.isArray(report.screenshots) ? report.screenshots : []).filter((item2) => {
19067
19120
  const path = typeof item2 === "string" ? item2 : item2?.path;
19068
19121
  try {
19069
- return typeof path === "string" && isPng(readFileSync17(resolve7(path)));
19122
+ return typeof path === "string" && isPng(readFileSync17(resolve8(path)));
19070
19123
  } catch {
19071
19124
  return false;
19072
19125
  }
@@ -19095,14 +19148,14 @@ async function designUtility(argv, { stdout = (value) => process.stdout.write(`$
19095
19148
  flags[key] = ["json", "no-open"].includes(key) ? true : args[++i];
19096
19149
  }
19097
19150
  if (flags.view && !["canvas", "prototype", "walkthrough"].includes(flags.view)) throw new Error("View must be canvas, prototype, or walkthrough.");
19098
- const file = resolve7(input);
19151
+ const file = resolve8(input);
19099
19152
  let result;
19100
19153
  if (command === "handoff") {
19101
19154
  const action3 = flags.action ?? "inspect";
19102
19155
  if (action3 === "inspect") result = readDesignHandoff(file);
19103
19156
  else {
19104
19157
  const snapshot2 = readDesignHandoff(file);
19105
- const input2 = flags.input ? readJson2(resolve7(flags.input)) : {};
19158
+ const input2 = flags.input ? readJson2(resolve8(flags.input)) : {};
19106
19159
  result = await updateDesignHandoff(file, { ...input2, action: action3, revision: input2.revision ?? snapshot2.revision, version: input2.version ?? (snapshot2.draft?.version ?? 0) });
19107
19160
  }
19108
19161
  }
@@ -19137,7 +19190,7 @@ async function designUtility(argv, { stdout = (value) => process.stdout.write(`$
19137
19190
  const current = currentDesign(file), view = flags.view ?? current.document.defaultView;
19138
19191
  const state = readJson2(join13(current.root, ".design/studio-state.json"), { state: {} }).state;
19139
19192
  if (flags.format && flags.format !== "html") throw new Error("Portable export supports HTML. Use the studio PNG action for browser-rendered captures.");
19140
- const output = resolve7(flags.output ?? join13(current.root, `${view}-export.html`));
19193
+ const output = resolve8(flags.output ?? join13(current.root, `${view}-export.html`));
19141
19194
  if (existsSync12(output)) throw new Error(`Export already exists: ${output}. Choose a new --output path.`);
19142
19195
  mkdirSync9(dirname14(output), { recursive: true });
19143
19196
  writeFileSync9(output, standaloneDesignHtml({ ...current, state }, view), { flag: "wx" });
@@ -19145,7 +19198,7 @@ async function designUtility(argv, { stdout = (value) => process.stdout.write(`$
19145
19198
  }
19146
19199
  if (command === "verify") {
19147
19200
  if (!flags.report) throw new Error("verify requires --report <browser-report.json>.");
19148
- result = verifyDesignDocument(file, readJson2(resolve7(flags.report)));
19201
+ result = verifyDesignDocument(file, readJson2(resolve8(flags.report)));
19149
19202
  }
19150
19203
  if (command === "feedback") {
19151
19204
  await syncDesignShare(file, { env, fetchImpl });
@@ -19156,7 +19209,7 @@ async function designUtility(argv, { stdout = (value) => process.stdout.write(`$
19156
19209
  if (!["json", "markdown"].includes(format)) throw new Error("Feedback export format must be json or markdown.");
19157
19210
  if (!["current", "all"].includes(scope)) throw new Error("Feedback export scope must be current or all.");
19158
19211
  if (!flags.output) throw new Error("Feedback export requires --output <path>.");
19159
- const output = resolve7(flags.output);
19212
+ const output = resolve8(flags.output);
19160
19213
  if (existsSync12(output)) throw new Error("Feedback export already exists. Choose a new --output path.");
19161
19214
  const snapshot2 = exportDesignReview(file, { scope, env });
19162
19215
  mkdirSync9(dirname14(output), { recursive: true });