openplanr 2.2640.4 → 2.2640.6

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 (102) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/dist/cli/commands/artifact.d.ts.map +1 -1
  3. package/dist/cli/commands/artifact.js +44 -21
  4. package/dist/cli/commands/artifact.js.map +1 -1
  5. package/dist/dashboard/.vite/manifest.json +1 -1
  6. package/dist/dashboard/assets/{index-CaX9EJp4.js → index-BqFEZO-9.js} +2 -2
  7. package/dist/dashboard/assets/{index-CaX9EJp4.js.map → index-BqFEZO-9.js.map} +1 -1
  8. package/dist/dashboard/dashboard-manifest.json +8 -8
  9. package/dist/dashboard/index.html +1 -1
  10. package/dist/services/diagram-artifact-service.d.ts +28 -1
  11. package/dist/services/diagram-artifact-service.d.ts.map +1 -1
  12. package/dist/services/diagram-artifact-service.js +64 -1
  13. package/dist/services/diagram-artifact-service.js.map +1 -1
  14. package/docs/ARTIFACT_REVIEW.md +38 -2
  15. package/docs/CLI.md +12 -2
  16. package/lib/host-packages/adapter-registry.json +5 -5
  17. package/lib/host-packages/capability-map.json +2 -2
  18. package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
  19. package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +1 -1
  20. package/lib/host-packages/claude/openplanr/.openplanr-content.json +33 -25
  21. package/lib/host-packages/claude/openplanr/README.md +1 -1
  22. package/lib/host-packages/claude/openplanr/skills/artifact/SKILL.md +14 -4
  23. package/lib/host-packages/claude/openplanr/skills/artifact/references/diagram-sharing.md +51 -0
  24. package/lib/host-packages/claude/openplanr/skills/design/scripts/design-artifact-shell.mjs +127 -123
  25. package/lib/host-packages/claude/openplanr/skills/design/scripts/design-review-handoff.mjs +4 -3
  26. package/lib/host-packages/claude/openplanr/skills/design/scripts/design-share.mjs +805 -574
  27. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/share.css +1 -1
  28. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/package.json +5 -1
  29. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design-artifact-shell.mjs +127 -123
  30. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design-review-handoff.mjs +4 -3
  31. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design-share.mjs +805 -574
  32. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/share.css +1 -1
  33. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/package.json +5 -1
  34. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design-artifact-shell.mjs +127 -123
  35. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design-review-handoff.mjs +4 -3
  36. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design-share.mjs +805 -574
  37. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/share.css +1 -1
  38. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/package.json +5 -1
  39. package/lib/host-packages/claude/openplanr/skills/diagram/SKILL.md +13 -0
  40. package/lib/host-packages/claude/openplanr/skills/diagram/references/diagram-sharing.md +51 -0
  41. package/lib/host-packages/claude/openplanr/skills/plan/scripts/design-artifact-shell.mjs +127 -123
  42. package/lib/host-packages/claude/openplanr/skills/plan/scripts/design-review-handoff.mjs +4 -3
  43. package/lib/host-packages/claude/openplanr/skills/plan/scripts/design-share.mjs +805 -574
  44. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/share.css +1 -1
  45. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/package.json +5 -1
  46. package/lib/host-packages/cursor/openplanr/.openplanr-content.json +32 -24
  47. package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
  48. package/lib/host-packages/cursor/openplanr/rules/planr-artifact/references/diagram-sharing.md +51 -0
  49. package/lib/host-packages/cursor/openplanr/rules/planr-artifact.mdc +14 -4
  50. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design-artifact-shell.mjs +127 -123
  51. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design-review-handoff.mjs +4 -3
  52. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design-share.mjs +805 -574
  53. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/design/templates/studio/share.css +1 -1
  54. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/package.json +5 -1
  55. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design-artifact-shell.mjs +127 -123
  56. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design-review-handoff.mjs +4 -3
  57. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design-share.mjs +805 -574
  58. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/share.css +1 -1
  59. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/package.json +5 -1
  60. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design-artifact-shell.mjs +127 -123
  61. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design-review-handoff.mjs +4 -3
  62. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design-share.mjs +805 -574
  63. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/design/templates/studio/share.css +1 -1
  64. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/package.json +5 -1
  65. package/lib/host-packages/cursor/openplanr/rules/planr-diagram/references/diagram-sharing.md +51 -0
  66. package/lib/host-packages/cursor/openplanr/rules/planr-diagram.mdc +13 -0
  67. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design-artifact-shell.mjs +127 -123
  68. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design-review-handoff.mjs +4 -3
  69. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design-share.mjs +805 -574
  70. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/design/templates/studio/share.css +1 -1
  71. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/package.json +5 -1
  72. package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
  73. package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +1 -1
  74. package/lib/host-packages/openai/openplanr/.openplanr-content.json +35 -27
  75. package/lib/host-packages/openai/openplanr/skills/artifact/SKILL.md +14 -4
  76. package/lib/host-packages/openai/openplanr/skills/artifact/agents/openai.yaml +2 -2
  77. package/lib/host-packages/openai/openplanr/skills/artifact/openplanr.skill.json +11 -0
  78. package/lib/host-packages/openai/openplanr/skills/artifact/references/diagram-sharing.md +51 -0
  79. package/lib/host-packages/openai/openplanr/skills/design/scripts/design-artifact-shell.mjs +127 -123
  80. package/lib/host-packages/openai/openplanr/skills/design/scripts/design-review-handoff.mjs +4 -3
  81. package/lib/host-packages/openai/openplanr/skills/design/scripts/design-share.mjs +805 -574
  82. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/share.css +1 -1
  83. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/package.json +5 -1
  84. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-artifact-shell.mjs +127 -123
  85. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-review-handoff.mjs +4 -3
  86. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-share.mjs +805 -574
  87. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/share.css +1 -1
  88. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/package.json +5 -1
  89. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design-artifact-shell.mjs +127 -123
  90. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design-review-handoff.mjs +4 -3
  91. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design-share.mjs +805 -574
  92. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/share.css +1 -1
  93. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/package.json +5 -1
  94. package/lib/host-packages/openai/openplanr/skills/diagram/SKILL.md +13 -0
  95. package/lib/host-packages/openai/openplanr/skills/diagram/openplanr.skill.json +11 -0
  96. package/lib/host-packages/openai/openplanr/skills/diagram/references/diagram-sharing.md +51 -0
  97. package/lib/host-packages/openai/openplanr/skills/plan/scripts/design-artifact-shell.mjs +127 -123
  98. package/lib/host-packages/openai/openplanr/skills/plan/scripts/design-review-handoff.mjs +4 -3
  99. package/lib/host-packages/openai/openplanr/skills/plan/scripts/design-share.mjs +805 -574
  100. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/share.css +1 -1
  101. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/package.json +5 -1
  102. package/package.json +2 -2
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "kind": "openplanr-dashboard-build",
3
3
  "schemaVersion": "1.0.0",
4
- "buildId": "dashboard-0.1.11-d19dc19305781f24",
4
+ "buildId": "dashboard-0.1.12-51bd4b03136872c1",
5
5
  "entry": "index.html",
6
6
  "assets": [
7
7
  "assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2",
@@ -16,8 +16,8 @@
16
16
  "assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2",
17
17
  "assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2",
18
18
  "assets/index-Bk8DyO_2.css",
19
- "assets/index-CaX9EJp4.js",
20
- "assets/index-CaX9EJp4.js.map"
19
+ "assets/index-BqFEZO-9.js",
20
+ "assets/index-BqFEZO-9.js.map"
21
21
  ],
22
22
  "assetDigests": {
23
23
  "assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2": {
@@ -68,17 +68,17 @@
68
68
  "bytes": 187656,
69
69
  "sha256": "sha256:ce569133bebdf30667b5af6937549dd967b5f88b0d100779d3db275909ecd723"
70
70
  },
71
- "assets/index-CaX9EJp4.js": {
71
+ "assets/index-BqFEZO-9.js": {
72
72
  "bytes": 942569,
73
- "sha256": "sha256:c03ce38c6a6c1bb451e726cfb9a042d5e113114dcb20459f70361654741a359d"
73
+ "sha256": "sha256:04c14d0a4f7452754bc7cf70c0551c4b80b5b8bd91d3c1f121726fc66f89e1b7"
74
74
  },
75
- "assets/index-CaX9EJp4.js.map": {
75
+ "assets/index-BqFEZO-9.js.map": {
76
76
  "bytes": 3430485,
77
- "sha256": "sha256:fbe1ffbb01eee9afb54720f66b878a2484762fb9b2a7e00675c687fd5bb75f63"
77
+ "sha256": "sha256:e74cc16a4bb05201ff9bb879193e688a57e27d9afdcad43ff802af287af18c0a"
78
78
  },
79
79
  "index.html": {
80
80
  "bytes": 396,
81
- "sha256": "sha256:30ee89374a4d3ada64b82e1cece86d99c4b4c9e5fdf6e14f1caa08e3d208f179"
81
+ "sha256": "sha256:43f6f4e21ee8ebe930f245147e58456904f73734065f8c16f3b89a3f03087bd8"
82
82
  }
83
83
  }
84
84
  }
@@ -4,7 +4,7 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>OpenPlanr</title>
7
- <script type="module" crossorigin src="./assets/index-CaX9EJp4.js"></script>
7
+ <script type="module" crossorigin src="./assets/index-BqFEZO-9.js"></script>
8
8
  <link rel="stylesheet" crossorigin href="./assets/index-Bk8DyO_2.css">
9
9
  </head>
10
10
  <body>
@@ -1,5 +1,32 @@
1
- import type { ArtifactEnvelope } from './artifact-pipeline-service.js';
1
+ import { type ArtifactEnvelope } from './artifact-pipeline-service.js';
2
2
  export declare function isDiagramManifestFile(file: string): boolean;
3
+ export declare function isDiagramShareFile(file: string): boolean;
4
+ export interface DiagramShareResult {
5
+ ok: boolean;
6
+ shared?: boolean;
7
+ title?: string;
8
+ url?: string;
9
+ id?: string;
10
+ localRevision?: string;
11
+ publishedRevision?: string;
12
+ reviewPath?: string;
13
+ imported?: number;
14
+ destination?: string;
15
+ output?: string;
16
+ }
17
+ export declare function previewDiagramShare(file: string): Promise<{
18
+ title: string;
19
+ source: {
20
+ digest: string;
21
+ };
22
+ scene: {
23
+ items: unknown[];
24
+ relations: unknown[];
25
+ };
26
+ destination: string;
27
+ localRevision: string;
28
+ }>;
29
+ export declare function runDiagramShareAction(file: string, action: 'share' | 'publish' | 'sync' | 'recovery', options?: Record<string, unknown>): Promise<DiagramShareResult>;
3
30
  export interface DiagramStudioSession {
4
31
  ok: boolean;
5
32
  url: string;
@@ -1 +1 @@
1
- {"version":3,"file":"diagram-artifact-service.d.ts","sourceRoot":"","sources":["../../src/services/diagram-artifact-service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGvE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ3D;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AA4BD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAGpF;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,oBAAoB,CAAC,CAW/B;AAED,0FAA0F;AAC1F,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C,GAAG,OAAO,CAAC;IACV,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,eAAe,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,IAAI,CAAA;KAAE,CAAC;IAC1C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC,CAWD"}
1
+ {"version":3,"file":"diagram-artifact-service.d.ts","sourceRoot":"","sources":["../../src/services/diagram-artifact-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,KAAK,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAI7F,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ3D;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQxD;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAcD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3B,KAAK,EAAE;QAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,SAAS,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAyBD;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,EACjD,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACpC,OAAO,CAAC,kBAAkB,CAAC,CAe7B;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AA4BD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAGpF;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,oBAAoB,CAAC,CA+B/B;AAED,0FAA0F;AAC1F,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C,GAAG,OAAO,CAAC;IACV,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,eAAe,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,IAAI,CAAA;KAAE,CAAC;IAC1C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC,CAWD"}
@@ -1,6 +1,8 @@
1
- import { readFileSync } from 'node:fs';
1
+ import { existsSync, readFileSync } from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { pathToFileURL } from 'node:url';
4
+ import { ArtifactCommandError } from './artifact-pipeline-service.js';
5
+ import { sha256CanonicalJson } from './canonical-json.js';
4
6
  import { resolvePipelinePackage } from './pipeline-package-service.js';
5
7
  export function isDiagramManifestFile(file) {
6
8
  if (!path.basename(file).endsWith('.manifest.json'))
@@ -13,6 +15,51 @@ export function isDiagramManifestFile(file) {
13
15
  return false;
14
16
  }
15
17
  }
18
+ export function isDiagramShareFile(file) {
19
+ if (isDiagramManifestFile(file))
20
+ return true;
21
+ if (path.extname(file).toLowerCase() !== '.json')
22
+ return false;
23
+ try {
24
+ return JSON.parse(readFileSync(file, 'utf8')).kind === 'diagram-authoring-bundle';
25
+ }
26
+ catch {
27
+ return path.basename(file).endsWith('.planr-diagram-bundle.json');
28
+ }
29
+ }
30
+ async function loadDiagramSharing(entry) {
31
+ const pipeline = resolvePipelinePackage(false);
32
+ const file = pipeline && path.join(pipeline.root, `lib/artifact/diagram/${entry}.mjs`);
33
+ if (!file || !existsSync(file))
34
+ throw new ArtifactCommandError('E_PIPELINE_VERSION_INCOMPATIBLE', 'The installed workflow package does not support native encrypted diagram sharing.', 'Install a compatible OpenPlanr release first.');
35
+ return import(pathToFileURL(file).href);
36
+ }
37
+ export async function previewDiagramShare(file) {
38
+ const runtime = await loadDiagramSharing('review-bundle');
39
+ if (typeof runtime.prepareDiagramShareBundle !== 'function')
40
+ throw new ArtifactCommandError('E_PIPELINE_VERSION_INCOMPATIBLE', 'The diagram sharing runtime is incompatible.', 'Update OpenPlanr first.');
41
+ const sharing = await loadDiagramSharing('share');
42
+ if (typeof sharing.getDiagramShareStatus !== 'function')
43
+ throw new ArtifactCommandError('E_PIPELINE_VERSION_INCOMPATIBLE', 'The diagram sharing runtime cannot preview its destination.', 'Update OpenPlanr first.');
44
+ const bundle = await runtime.prepareDiagramShareBundle(path.resolve(file));
45
+ const status = await sharing.getDiagramShareStatus(path.resolve(file));
46
+ const localRevision = sha256CanonicalJson(bundle).slice('sha256:'.length);
47
+ if (localRevision !== status.localRevision)
48
+ throw new ArtifactCommandError('E_DIAGRAM_SHARE_PREVIEW_CHANGED', 'The diagram changed while preparing its sharing preview.', 'Preview the current diagram and retry.');
49
+ return { ...bundle, destination: status.destination, localRevision };
50
+ }
51
+ export async function runDiagramShareAction(file, action, options = {}) {
52
+ const runtime = await loadDiagramSharing('share');
53
+ const method = {
54
+ share: 'shareDiagram',
55
+ publish: 'publishDiagramShare',
56
+ sync: 'syncDiagramShare',
57
+ recovery: 'exportDiagramShareRecovery',
58
+ }[action];
59
+ if (typeof runtime[method] !== 'function')
60
+ throw new ArtifactCommandError('E_PIPELINE_VERSION_INCOMPATIBLE', 'The diagram sharing runtime is incompatible.', 'Update OpenPlanr first.');
61
+ return runtime[method](path.resolve(file), options);
62
+ }
16
63
  async function loadDiagramArtifactRuntime() {
17
64
  const pipeline = resolvePipelinePackage(false);
18
65
  if (!pipeline) {
@@ -30,6 +77,22 @@ export async function prepareDiagramArtifact(file) {
30
77
  return (await runtime.createDiagramArtifactEnvelope(path.resolve(file))).envelope;
31
78
  }
32
79
  export async function openDiagramArtifact(file, options) {
80
+ if (!isDiagramManifestFile(file) && isDiagramShareFile(file)) {
81
+ const suffix = '.planr-diagram-bundle.json';
82
+ const slug = path.basename(file).slice(0, -suffix.length);
83
+ if (!path.basename(file).endsWith(suffix) ||
84
+ path.basename(path.dirname(file)) !== slug ||
85
+ path.basename(path.dirname(path.dirname(file))) !== 'diagrams')
86
+ throw new Error('Authored diagrams must use diagrams/{slug}/{slug}.planr-diagram-bundle.json.');
87
+ const owner = await openDiagramOwner({
88
+ root: path.dirname(path.dirname(path.dirname(file))),
89
+ slug,
90
+ noOpen: options.noOpen === true,
91
+ port: options.port,
92
+ openUrl: options.openUrl,
93
+ });
94
+ return { ...owner, reviewPath: '' };
95
+ }
33
96
  const pipeline = resolvePipelinePackage(false);
34
97
  if (!pipeline)
35
98
  throw new Error('Diagram studio requires the OpenPlanr workflow package.');
@@ -1 +1 @@
1
- {"version":3,"file":"diagram-artifact-service.js","sourceRoot":"","sources":["../../src/services/diagram-artifact-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagram-artifact-service.js","sourceRoot":"","sources":["../../src/services/diagram-artifact-service.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  # Artifact review and private sharing
2
2
 
3
- `planr artifact` turns a project-local HTML file into a loopback-only review
4
- session with comments, pins, threads, and Approve or Request changes decisions.
3
+ `planr artifact` opens native diagrams, authored designs, and HTML artifacts for
4
+ local review or explicit encrypted sharing. Generic HTML sessions support
5
+ comments, pins, threads, and Approve or Request changes decisions.
5
6
  JavaScript inside the artifact remains interactive in an opaque-origin,
6
7
  network-blocked sandbox.
7
8
 
@@ -45,6 +46,41 @@ This is private artifact review, not standalone website hosting. Publishing a
45
46
  top-level website would require a separate isolated artifact origin and is not
46
47
  part of this command.
47
48
 
49
+ ## Native diagram sharing
50
+
51
+ ```bash
52
+ planr artifact open ./diagrams/handover/handover.manifest.json
53
+ planr artifact share ./diagrams/handover/handover.manifest.json --yes --no-open
54
+ planr artifact publish ./diagrams/handover/handover.manifest.json --yes
55
+ planr artifact sync ./diagrams/handover/handover.manifest.json
56
+ ```
57
+
58
+ An authored `diagrams/<slug>/<slug>.planr-diagram-bundle.json` is also accepted.
59
+ Sharing publishes the selected diagram's native scene without converting its
60
+ format or rerunning layout. The creation preview shows its title, source
61
+ revision, publication contents, destination and retention. Original source
62
+ bytes, local paths and private provenance are excluded.
63
+
64
+ Each diagram has a stable `/diagram/<id>` URL and a separate reviewer access
65
+ token. Use the local studio's **Share diagram** dialog to copy them separately.
66
+ Owner custody is kept privately outside the repository. Ordinary command output
67
+ contains no tokens or signing keys; `--secret-output` explicitly exports recovery
68
+ to a new private file. Reviews last until revoked or deleted and remain available
69
+ while the owner's laptop is offline.
70
+
71
+ Local edits remain unpublished until **Publish revision** or `artifact publish`.
72
+ Comments are tied to their published revision and element or scene position.
73
+ Earlier revisions stay readable but accept no new comments. Synchronization
74
+ imports feedback into the local ledger without modifying diagram content.
75
+ Reviewers can use outline/search, inspection, pan/zoom, Fit, Present, Discussion,
76
+ Revisions, and SVG/PNG or feedback export. The native shell loads its packaged
77
+ font before reporting readiness and preserves wide diagrams without an HTML
78
+ wrapper viewport.
79
+
80
+ An incompatible installed runtime or hosted service produces a compatibility
81
+ error. There is no automatic HTML fallback. To share an HTML snapshot, export
82
+ HTML first and explicitly use the generic snapshot route.
83
+
48
84
  ## Private links
49
85
 
50
86
  ```bash
package/docs/CLI.md CHANGED
@@ -590,16 +590,26 @@ bundles); `OPENPLANR_ECOSYSTEM_SOURCE` points the check at another URL or file.
590
590
 
591
591
  ### `planr artifact`
592
592
 
593
- Open, share, import, and export universal HTML review sessions:
593
+ Open, share, import, and export native diagrams, designs, and HTML reviews:
594
594
 
595
595
  ```bash
596
596
  planr artifact <file>
597
597
  planr artifact open <file> [--title <title>] [--root <asset-root>] [--theme auto|light|dark] [--presentation auto|document|canvas] [--port <port>] [--no-open] [--json]
598
598
  planr artifact share <file> [--title <title>] [--root <asset-root>] [--presentation auto|document|canvas] [--snapshot] [--short] [--ttl 1d|7d|30d] [--secret-output <private-file>] [--no-open] [--json] [--yes]
599
- planr artifact import <review-url>... [--output <path>] [--allow-stale] [--json] [--yes]
599
+ planr artifact publish <diagram-manifest|diagram-bundle|design-document> [--yes] [--json]
600
+ planr artifact sync <diagram-manifest|diagram-bundle|design-document> [--json]
601
+ planr artifact import --secret-input <private-file|-> [--output <path>] [--allow-stale] [--json] [--yes]
600
602
  planr artifact export <session-id> [--format json|markdown] [--output <path>]
601
603
  ```
602
604
 
605
+ Diagram manifests and authoring bundles share directly to one permanent native
606
+ review per stable `/diagram/<id>` link, with a separate reviewer access token.
607
+ The local studio's **Share diagram** dialog copies the link and token separately.
608
+ Owner credentials stay privately outside the repository. Publish revisions
609
+ explicitly; `sync` imports revision-bound feedback without changing the diagram.
610
+ Native diagram sharing does not accept `--snapshot`, `--short`, or `--ttl`;
611
+ export HTML first to choose the generic snapshot transport.
612
+
603
613
  When `--root` is omitted, the artifact file's directory is the asset root. This
604
614
  makes `planr artifact share /absolute/path/to/artifact.html` work without
605
615
  changing directories or supplying a redundant root. Supported public HTTPS
@@ -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.55.5",
6
- "pluginVersion": "2.2640.4",
5
+ "pipelineVersion": "0.55.7",
6
+ "pluginVersion": "2.2640.6",
7
7
  "adapters": [
8
8
  {
9
9
  "id": "claude-code",
10
- "version": "2.2640.4",
10
+ "version": "2.2640.6",
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.2640.4",
22
+ "version": "2.2640.6",
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.2640.4",
34
+ "version": "2.2640.6",
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.2640.4",
4
+ "pluginVersion": "2.2640.6",
5
5
  "families": [
6
6
  {
7
7
  "id": "planning",
@@ -57,7 +57,7 @@
57
57
  "id": "planr-artifact",
58
58
  "name": "artifact",
59
59
  "family": "artifact",
60
- "description": "Open, share, import, or export an OpenPlanr HTML artifact review. Use when feedback must move between a local artifact and its review board.",
60
+ "description": "Open, share, import, or export an OpenPlanr diagram, design, or HTML artifact review. Use when feedback must move between a local artifact and its review board.",
61
61
  "useWhen": [
62
62
  "Open or share an HTML artifact review",
63
63
  "Import artifact feedback and export the reviewed artifact"
@@ -5,14 +5,14 @@
5
5
  "name": "OpenPlanr"
6
6
  },
7
7
  "metadata": {
8
- "version": "2.2640.4",
8
+ "version": "2.2640.6",
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.2640.4",
15
+ "version": "2.2640.6",
16
16
  "description": "Close the loop from intent to delivery. Plan, design, build, review, and operate from durable context in your repository.",
17
17
  "strict": true
18
18
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "planr",
3
3
  "displayName": "OpenPlanr",
4
- "version": "2.2640.4",
4
+ "version": "2.2640.6",
5
5
  "description": "Close the loop from intent to delivery. Plan, design, build, review, and operate from durable context in your repository.",
6
6
  "author": {
7
7
  "name": "OpenPlanr",
@@ -12,7 +12,7 @@
12
12
  },
13
13
  {
14
14
  "path": ".claude-plugin/plugin.json",
15
- "digest": "sha256:3635e54a46deadee41df4178e18e306be863da02228361b1871feca2e4471f0e"
15
+ "digest": "sha256:2e9e06eeebcdb4be8cfbcb3f30616ba20c0e55df02e6c6eefdf3ec2fe795630a"
16
16
  },
17
17
  {
18
18
  "path": "agents/planr-backend.md",
@@ -52,7 +52,7 @@
52
52
  },
53
53
  {
54
54
  "path": "README.md",
55
- "digest": "sha256:d56564195b147abfb1473d9e5312ef3fdc50c5ecf373619d4fff6ea6ccdb30f6"
55
+ "digest": "sha256:994d6f85fafa6338737f6aca7c86b3cf19f4d26fab74092cf1107fa16adc6eb2"
56
56
  },
57
57
  {
58
58
  "path": "references/agents/shared/modes/default/backend.md",
@@ -166,9 +166,13 @@
166
166
  "path": "skills/artifact/references/design-sharing.md",
167
167
  "digest": "sha256:452c7e11b3366b026d9e90b664980b3b5bdf8359ccb1a2bab090b43ae3addd72"
168
168
  },
169
+ {
170
+ "path": "skills/artifact/references/diagram-sharing.md",
171
+ "digest": "sha256:343e5e6d67e9ec120e5c8095f909e4f18d17afd9f669d9725ab9a99be850d9f7"
172
+ },
169
173
  {
170
174
  "path": "skills/artifact/SKILL.md",
171
- "digest": "sha256:743676b2a88716aecb7b3f8abc77cba0358ae6bc4c84bd9ab9686f1a8d513cbb"
175
+ "digest": "sha256:6225dd76d0411013f6d67b972718b5d91610658c3cd57ee7fa05917be282f1c5"
172
176
  },
173
177
  {
174
178
  "path": "skills/browser-qa/SKILL.md",
@@ -388,7 +392,7 @@
388
392
  },
389
393
  {
390
394
  "path": "skills/design-loop/scripts/design-artifact-shell.mjs",
391
- "digest": "sha256:2612a0ac85e121b9562e6239e3832be64933c89ea5b5739b18b58748d69ac791"
395
+ "digest": "sha256:214b52aeafbf1996df76d3e2a8ff140240bec7aa477a798402e1f8af6ddac0ee"
392
396
  },
393
397
  {
394
398
  "path": "skills/design-loop/scripts/design-document.mjs",
@@ -408,7 +412,7 @@
408
412
  },
409
413
  {
410
414
  "path": "skills/design-loop/scripts/design-review-handoff.mjs",
411
- "digest": "sha256:3e55cf8003b7f1645c5d9dded0ea206bf02cb6cf44f342815528e687768b0dbc"
415
+ "digest": "sha256:fcd27c05fd75fee7f40fee0241c1df4181d079d17d54fdf597af26135d65fc3e"
412
416
  },
413
417
  {
414
418
  "path": "skills/design-loop/scripts/design-sandbox-guards.mjs",
@@ -416,7 +420,7 @@
416
420
  },
417
421
  {
418
422
  "path": "skills/design-loop/scripts/design-share.mjs",
419
- "digest": "sha256:11de427bd02b89fdf6df5b3d8eaffa7c2025ab841712c7dfc0da6e5a3e41ca36"
423
+ "digest": "sha256:6febde24a1fa6b29001a166c1997d759163dc79b2ff2a9a98094b0bb8aa81cda"
420
424
  },
421
425
  {
422
426
  "path": "skills/design-loop/scripts/design.mjs",
@@ -444,7 +448,7 @@
444
448
  },
445
449
  {
446
450
  "path": "skills/design-loop/scripts/runtime/packages/design/templates/studio/share.css",
447
- "digest": "sha256:6923307acbdba81a4bcd1d24e5ed1553dc49b6f0a656222f397d36fd34afe265"
451
+ "digest": "sha256:c1afe8271c85ca7523aa520daf093c24a653f9fe6e08caffd56391a8b592c206"
448
452
  },
449
453
  {
450
454
  "path": "skills/design-loop/scripts/runtime/packages/design/templates/studio/share.js",
@@ -460,7 +464,7 @@
460
464
  },
461
465
  {
462
466
  "path": "skills/design-loop/scripts/runtime/packages/protocol/package.json",
463
- "digest": "sha256:bb969da90f0482f19b3afc21b4b35e4c00efff42c69ec61d9c5c07395e2bfd69"
467
+ "digest": "sha256:f852e8672da74901a7fc3819c10abf37e27744ea40ec9af4c807be1fdbc9ad7c"
464
468
  },
465
469
  {
466
470
  "path": "skills/design-loop/scripts/runtime/packages/protocol/registries/artifact-theme.json",
@@ -596,7 +600,7 @@
596
600
  },
597
601
  {
598
602
  "path": "skills/design-review/scripts/design-artifact-shell.mjs",
599
- "digest": "sha256:2612a0ac85e121b9562e6239e3832be64933c89ea5b5739b18b58748d69ac791"
603
+ "digest": "sha256:214b52aeafbf1996df76d3e2a8ff140240bec7aa477a798402e1f8af6ddac0ee"
600
604
  },
601
605
  {
602
606
  "path": "skills/design-review/scripts/design-document.mjs",
@@ -616,7 +620,7 @@
616
620
  },
617
621
  {
618
622
  "path": "skills/design-review/scripts/design-review-handoff.mjs",
619
- "digest": "sha256:3e55cf8003b7f1645c5d9dded0ea206bf02cb6cf44f342815528e687768b0dbc"
623
+ "digest": "sha256:fcd27c05fd75fee7f40fee0241c1df4181d079d17d54fdf597af26135d65fc3e"
620
624
  },
621
625
  {
622
626
  "path": "skills/design-review/scripts/design-sandbox-guards.mjs",
@@ -624,7 +628,7 @@
624
628
  },
625
629
  {
626
630
  "path": "skills/design-review/scripts/design-share.mjs",
627
- "digest": "sha256:11de427bd02b89fdf6df5b3d8eaffa7c2025ab841712c7dfc0da6e5a3e41ca36"
631
+ "digest": "sha256:6febde24a1fa6b29001a166c1997d759163dc79b2ff2a9a98094b0bb8aa81cda"
628
632
  },
629
633
  {
630
634
  "path": "skills/design-review/scripts/design.mjs",
@@ -652,7 +656,7 @@
652
656
  },
653
657
  {
654
658
  "path": "skills/design-review/scripts/runtime/packages/design/templates/studio/share.css",
655
- "digest": "sha256:6923307acbdba81a4bcd1d24e5ed1553dc49b6f0a656222f397d36fd34afe265"
659
+ "digest": "sha256:c1afe8271c85ca7523aa520daf093c24a653f9fe6e08caffd56391a8b592c206"
656
660
  },
657
661
  {
658
662
  "path": "skills/design-review/scripts/runtime/packages/design/templates/studio/share.js",
@@ -668,7 +672,7 @@
668
672
  },
669
673
  {
670
674
  "path": "skills/design-review/scripts/runtime/packages/protocol/package.json",
671
- "digest": "sha256:bb969da90f0482f19b3afc21b4b35e4c00efff42c69ec61d9c5c07395e2bfd69"
675
+ "digest": "sha256:f852e8672da74901a7fc3819c10abf37e27744ea40ec9af4c807be1fdbc9ad7c"
672
676
  },
673
677
  {
674
678
  "path": "skills/design-review/scripts/runtime/packages/protocol/registries/artifact-theme.json",
@@ -804,7 +808,7 @@
804
808
  },
805
809
  {
806
810
  "path": "skills/design/scripts/design-artifact-shell.mjs",
807
- "digest": "sha256:2612a0ac85e121b9562e6239e3832be64933c89ea5b5739b18b58748d69ac791"
811
+ "digest": "sha256:214b52aeafbf1996df76d3e2a8ff140240bec7aa477a798402e1f8af6ddac0ee"
808
812
  },
809
813
  {
810
814
  "path": "skills/design/scripts/design-document.mjs",
@@ -824,7 +828,7 @@
824
828
  },
825
829
  {
826
830
  "path": "skills/design/scripts/design-review-handoff.mjs",
827
- "digest": "sha256:3e55cf8003b7f1645c5d9dded0ea206bf02cb6cf44f342815528e687768b0dbc"
831
+ "digest": "sha256:fcd27c05fd75fee7f40fee0241c1df4181d079d17d54fdf597af26135d65fc3e"
828
832
  },
829
833
  {
830
834
  "path": "skills/design/scripts/design-sandbox-guards.mjs",
@@ -832,7 +836,7 @@
832
836
  },
833
837
  {
834
838
  "path": "skills/design/scripts/design-share.mjs",
835
- "digest": "sha256:11de427bd02b89fdf6df5b3d8eaffa7c2025ab841712c7dfc0da6e5a3e41ca36"
839
+ "digest": "sha256:6febde24a1fa6b29001a166c1997d759163dc79b2ff2a9a98094b0bb8aa81cda"
836
840
  },
837
841
  {
838
842
  "path": "skills/design/scripts/design.mjs",
@@ -860,7 +864,7 @@
860
864
  },
861
865
  {
862
866
  "path": "skills/design/scripts/runtime/packages/design/templates/studio/share.css",
863
- "digest": "sha256:6923307acbdba81a4bcd1d24e5ed1553dc49b6f0a656222f397d36fd34afe265"
867
+ "digest": "sha256:c1afe8271c85ca7523aa520daf093c24a653f9fe6e08caffd56391a8b592c206"
864
868
  },
865
869
  {
866
870
  "path": "skills/design/scripts/runtime/packages/design/templates/studio/share.js",
@@ -876,7 +880,7 @@
876
880
  },
877
881
  {
878
882
  "path": "skills/design/scripts/runtime/packages/protocol/package.json",
879
- "digest": "sha256:bb969da90f0482f19b3afc21b4b35e4c00efff42c69ec61d9c5c07395e2bfd69"
883
+ "digest": "sha256:f852e8672da74901a7fc3819c10abf37e27744ea40ec9af4c807be1fdbc9ad7c"
880
884
  },
881
885
  {
882
886
  "path": "skills/design/scripts/runtime/packages/protocol/registries/artifact-theme.json",
@@ -974,9 +978,13 @@
974
978
  "path": "skills/diagram/references/diagram-intent-to-ir.md",
975
979
  "digest": "sha256:ff8179545fb8aa017acff90cca81896b295682beacc53a82dac8a32f4fb1e005"
976
980
  },
981
+ {
982
+ "path": "skills/diagram/references/diagram-sharing.md",
983
+ "digest": "sha256:343e5e6d67e9ec120e5c8095f909e4f18d17afd9f669d9725ab9a99be850d9f7"
984
+ },
977
985
  {
978
986
  "path": "skills/diagram/SKILL.md",
979
- "digest": "sha256:c60ac43750eea0c7fdb30a64d7553b766ce6ae54636e737264166ff5215b7d74"
987
+ "digest": "sha256:8a6f63b692cf9979036e62585a200f5539b75ceb81bb87437166ddaf668c7d43"
980
988
  },
981
989
  {
982
990
  "path": "skills/doctor/references/upgrade.md",
@@ -1044,7 +1052,7 @@
1044
1052
  },
1045
1053
  {
1046
1054
  "path": "skills/plan/scripts/design-artifact-shell.mjs",
1047
- "digest": "sha256:2612a0ac85e121b9562e6239e3832be64933c89ea5b5739b18b58748d69ac791"
1055
+ "digest": "sha256:214b52aeafbf1996df76d3e2a8ff140240bec7aa477a798402e1f8af6ddac0ee"
1048
1056
  },
1049
1057
  {
1050
1058
  "path": "skills/plan/scripts/design-document.mjs",
@@ -1064,7 +1072,7 @@
1064
1072
  },
1065
1073
  {
1066
1074
  "path": "skills/plan/scripts/design-review-handoff.mjs",
1067
- "digest": "sha256:3e55cf8003b7f1645c5d9dded0ea206bf02cb6cf44f342815528e687768b0dbc"
1075
+ "digest": "sha256:fcd27c05fd75fee7f40fee0241c1df4181d079d17d54fdf597af26135d65fc3e"
1068
1076
  },
1069
1077
  {
1070
1078
  "path": "skills/plan/scripts/design-sandbox-guards.mjs",
@@ -1072,7 +1080,7 @@
1072
1080
  },
1073
1081
  {
1074
1082
  "path": "skills/plan/scripts/design-share.mjs",
1075
- "digest": "sha256:11de427bd02b89fdf6df5b3d8eaffa7c2025ab841712c7dfc0da6e5a3e41ca36"
1083
+ "digest": "sha256:6febde24a1fa6b29001a166c1997d759163dc79b2ff2a9a98094b0bb8aa81cda"
1076
1084
  },
1077
1085
  {
1078
1086
  "path": "skills/plan/scripts/design.mjs",
@@ -1104,7 +1112,7 @@
1104
1112
  },
1105
1113
  {
1106
1114
  "path": "skills/plan/scripts/runtime/packages/design/templates/studio/share.css",
1107
- "digest": "sha256:6923307acbdba81a4bcd1d24e5ed1553dc49b6f0a656222f397d36fd34afe265"
1115
+ "digest": "sha256:c1afe8271c85ca7523aa520daf093c24a653f9fe6e08caffd56391a8b592c206"
1108
1116
  },
1109
1117
  {
1110
1118
  "path": "skills/plan/scripts/runtime/packages/design/templates/studio/share.js",
@@ -1120,7 +1128,7 @@
1120
1128
  },
1121
1129
  {
1122
1130
  "path": "skills/plan/scripts/runtime/packages/protocol/package.json",
1123
- "digest": "sha256:bb969da90f0482f19b3afc21b4b35e4c00efff42c69ec61d9c5c07395e2bfd69"
1131
+ "digest": "sha256:f852e8672da74901a7fc3819c10abf37e27744ea40ec9af4c807be1fdbc9ad7c"
1124
1132
  },
1125
1133
  {
1126
1134
  "path": "skills/plan/scripts/runtime/packages/protocol/registries/artifact-theme.json",
@@ -1287,5 +1295,5 @@
1287
1295
  "digest": "sha256:06048f24128098919931db60272e0e14fe51bcbeba4b499db587e3b89d7bb3b9"
1288
1296
  }
1289
1297
  ],
1290
- "contentDigest": "sha256:6f6a89edee4d50fce3783c637e4331d5a0fdd0e6fb251ce05f725b216d879519"
1298
+ "contentDigest": "sha256:313b1ebb504258e3e0825c23d4fce2194703d170a7f8689596d27c0199e8d04f"
1291
1299
  }
@@ -17,7 +17,7 @@ Follow with `/planr:plan` to decompose the specification into stories and tasks,
17
17
  ## Install the CLI
18
18
 
19
19
  Several skills call the deterministic `planr` CLI from the `openplanr` npm package, which ships
20
- this plugin at the same version (2.2640.4):
20
+ this plugin at the same version (2.2640.6):
21
21
 
22
22
  ```bash
23
23
  npm install -g openplanr
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: artifact
3
- description: Open, share, import, or export an OpenPlanr HTML artifact review. Use when feedback must move between a local artifact and its review board.
3
+ description: Open, share, import, or export an OpenPlanr diagram, design, or HTML artifact review. Use when feedback must move between a local artifact and its review board.
4
4
  license: MIT
5
5
  ---
6
6
 
@@ -14,7 +14,15 @@ relaunch the active coding agent from inside this skill.
14
14
  Generic artifacts default to the edge-to-edge `document` presentation. Use
15
15
  `--presentation canvas` only for an explicitly spatial or zoomable review,
16
16
  or `--presentation document` to force the reading surface.
17
- 2. Sharing is always explicit. Run `planr artifact share <file>` only after the
17
+ 2. For a diagram manifest or authored bundle, read
18
+ [diagram-sharing.md](references/diagram-sharing.md). `planr artifact share
19
+ <manifest-or-bundle>` creates a native permanent encrypted review with a stable
20
+ URL and a separately entered access token. Use the local **Share diagram**
21
+ dialog to copy it. Publish only an explicitly requested update with `planr
22
+ artifact publish <manifest-or-bundle>`; synchronize feedback with `planr
23
+ artifact sync <manifest-or-bundle>`. Verify the actual shared native canvas,
24
+ fonts and source revision before describing the hosted result as verified.
25
+ Sharing is always explicit. Run `planr artifact share <file>` only after the
18
26
  user asks to share. Before sharing or publishing a design document, read
19
27
  [design-sharing.md](references/design-sharing.md) and author or refresh its
20
28
  sibling `review-context.json` in this active host session. Ground the welcome
@@ -43,8 +51,10 @@ relaunch the active coding agent from inside this skill.
43
51
  Local review is loopback-only. Opening, approving, finishing, or importing an
44
52
  artifact never publishes it automatically.
45
53
 
46
- The CLI bundles complete local HTML/CSS/JavaScript before review or sharing and
47
- runs it inside an invisible opaque-origin sandbox. This is private review, not
54
+ For generic HTML, the CLI bundles complete local HTML/CSS/JavaScript before
55
+ review or sharing and runs it inside an invisible opaque-origin sandbox. Native
56
+ diagram reviews mount only validated passive SVG or a read-only authoring
57
+ projection; sharing never grants source-edit permission. This is private review, not
48
58
  standalone website hosting; never describe a review URL as deploying the source
49
59
  artifact.
50
60