openplanr 2.6.1 → 2.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/dist/dashboard/.vite/manifest.json +1 -1
- package/dist/dashboard/assets/{index-BaARCc1f.js → index-AeydhSKa.js} +2 -2
- package/dist/dashboard/assets/{index-BaARCc1f.js.map → index-AeydhSKa.js.map} +1 -1
- package/dist/dashboard/dashboard-manifest.json +8 -8
- package/dist/dashboard/index.html +1 -1
- package/dist/services/diagram-artifact-service.d.ts +26 -0
- package/dist/services/diagram-artifact-service.d.ts.map +1 -1
- package/dist/services/diagram-artifact-service.js +10 -0
- package/dist/services/diagram-artifact-service.js.map +1 -1
- package/lib/host-packages/adapter-registry.json +5 -5
- package/lib/host-packages/capability-map.json +1 -1
- package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
- package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +1 -1
- package/lib/host-packages/claude/openplanr/.openplanr-content.json +11 -11
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design.mjs +80 -1
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design.mjs +80 -1
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design.mjs +80 -1
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/claude/openplanr/skills/diagram/references/diagram-fidelity.md +14 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design.mjs +80 -1
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/cursor/openplanr/.openplanr-content.json +11 -11
- package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design.mjs +80 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design.mjs +80 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design.mjs +80 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-diagram/references/diagram-fidelity.md +14 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design.mjs +80 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
- package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +1 -1
- package/lib/host-packages/openai/openplanr/.openplanr-content.json +11 -11
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design.mjs +80 -1
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design.mjs +80 -1
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design.mjs +80 -1
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/openai/openplanr/skills/diagram/references/diagram-fidelity.md +14 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design.mjs +80 -1
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/package.json +5 -1
- 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.
|
|
4
|
+
"buildId": "dashboard-0.1.5-11df7521ace6e45b",
|
|
5
5
|
"entry": "index.html",
|
|
6
6
|
"assets": [
|
|
7
7
|
"assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2",
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2",
|
|
16
16
|
"assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2",
|
|
17
17
|
"assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2",
|
|
18
|
-
"assets/index-
|
|
19
|
-
"assets/index-
|
|
18
|
+
"assets/index-AeydhSKa.js",
|
|
19
|
+
"assets/index-AeydhSKa.js.map",
|
|
20
20
|
"assets/index-Bk8DyO_2.css"
|
|
21
21
|
],
|
|
22
22
|
"assetDigests": {
|
|
@@ -64,13 +64,13 @@
|
|
|
64
64
|
"bytes": 8004,
|
|
65
65
|
"sha256": "sha256:8fa40e5d248247735eb97a0bd593b8852440430600d6ba01364c31fe0abc1fe1"
|
|
66
66
|
},
|
|
67
|
-
"assets/index-
|
|
67
|
+
"assets/index-AeydhSKa.js": {
|
|
68
68
|
"bytes": 942574,
|
|
69
|
-
"sha256": "sha256:
|
|
69
|
+
"sha256": "sha256:a2c003bc1efd5932299e0086a623c06d26e625773ec831d65802030756c0ed71"
|
|
70
70
|
},
|
|
71
|
-
"assets/index-
|
|
71
|
+
"assets/index-AeydhSKa.js.map": {
|
|
72
72
|
"bytes": 3425939,
|
|
73
|
-
"sha256": "sha256:
|
|
73
|
+
"sha256": "sha256:e107392ba84b607af013621cd71bf130947c6b3330200b03c27dde6d1bf32f32"
|
|
74
74
|
},
|
|
75
75
|
"assets/index-Bk8DyO_2.css": {
|
|
76
76
|
"bytes": 187656,
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
},
|
|
79
79
|
"index.html": {
|
|
80
80
|
"bytes": 396,
|
|
81
|
-
"sha256": "sha256:
|
|
81
|
+
"sha256": "sha256:032be5b3c68ce3e0d16a0a1a592ea7b0197b7b87120202b458888a8644726ad1"
|
|
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-
|
|
7
|
+
<script type="module" crossorigin src="./assets/index-AeydhSKa.js"></script>
|
|
8
8
|
<link rel="stylesheet" crossorigin href="./assets/index-Bk8DyO_2.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
@@ -9,4 +9,30 @@ export interface DiagramStudioSession {
|
|
|
9
9
|
}
|
|
10
10
|
export declare function prepareDiagramArtifact(file: string): Promise<ArtifactEnvelope>;
|
|
11
11
|
export declare function openDiagramArtifact(file: string, options: Record<string, unknown>): Promise<DiagramStudioSession>;
|
|
12
|
+
/** Programmatic owner bridge; command registration belongs to the authoring CLI slice. */
|
|
13
|
+
export declare function openDiagramOwner(options: {
|
|
14
|
+
root: string;
|
|
15
|
+
slug: string;
|
|
16
|
+
title?: string;
|
|
17
|
+
grammar?: string;
|
|
18
|
+
noOpen?: boolean;
|
|
19
|
+
openUrl?: (url: string) => void | Promise<void>;
|
|
20
|
+
port?: number;
|
|
21
|
+
env?: Record<string, string | undefined>;
|
|
22
|
+
}): Promise<{
|
|
23
|
+
ok: true;
|
|
24
|
+
kind: 'diagram-owner';
|
|
25
|
+
sessionId: string;
|
|
26
|
+
recoveryScope: string;
|
|
27
|
+
baseUrl: string;
|
|
28
|
+
url: string;
|
|
29
|
+
launchError?: string;
|
|
30
|
+
apiBase: string;
|
|
31
|
+
capabilities: {
|
|
32
|
+
read: true;
|
|
33
|
+
write: true;
|
|
34
|
+
};
|
|
35
|
+
headers: Record<string, string>;
|
|
36
|
+
close(): Promise<void>;
|
|
37
|
+
}>;
|
|
12
38
|
//# sourceMappingURL=diagram-artifact-service.d.ts.map
|
|
@@ -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"}
|
|
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"}
|
|
@@ -38,4 +38,14 @@ export async function openDiagramArtifact(file, options) {
|
|
|
38
38
|
throw new Error('The installed workflow package does not support the native diagram studio. Update OpenPlanr first.');
|
|
39
39
|
return runtime.startDiagramReview(path.resolve(file), options);
|
|
40
40
|
}
|
|
41
|
+
/** Programmatic owner bridge; command registration belongs to the authoring CLI slice. */
|
|
42
|
+
export async function openDiagramOwner(options) {
|
|
43
|
+
const pipeline = resolvePipelinePackage(false);
|
|
44
|
+
if (!pipeline)
|
|
45
|
+
throw new Error('Diagram editing requires the OpenPlanr workflow package.');
|
|
46
|
+
const runtime = await import(pathToFileURL(path.join(pipeline.root, 'lib/artifact/diagram/editor/local-owner.mjs')).href);
|
|
47
|
+
if (typeof runtime.startDiagramOwner !== 'function')
|
|
48
|
+
throw new Error('The installed workflow package does not support diagram editing. Update OpenPlanr first.');
|
|
49
|
+
return runtime.startDiagramOwner({ ...options, root: path.resolve(options.root) });
|
|
50
|
+
}
|
|
41
51
|
//# sourceMappingURL=diagram-artifact-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagram-artifact-service.js","sourceRoot":"","sources":["../../src/services/diagram-artifact-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAAE,OAAO,KAAK,CAAC;IAClE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAA4B,CAAC;QAChF,OAAO,KAAK,CAAC,IAAI,KAAK,kBAAkB,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC;IAClF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAmBD,KAAK,UAAU,0BAA0B;IACvC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,2GAA2G,CAC5G,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAoC,CAAC;IAC7F,IAAI,OAAO,OAAO,CAAC,6BAA6B,KAAK,UAAU,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CACb,4BAA4B,QAAQ,CAAC,OAAO,qEAAqE,CAClH,CAAC;IACJ,CAAC;IACD,OAAO,OAAiC,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAY;IACvD,MAAM,OAAO,GAAG,MAAM,0BAA0B,EAAE,CAAC;IACnD,OAAO,CAAC,MAAM,OAAO,CAAC,6BAA6B,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAY,EACZ,OAAgC;IAEhC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC1F,MAAM,OAAO,GAAG,MAAM,MAAM,CAC1B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,iCAAiC,CAAC,CAAC,CAAC,IAAI,CAChF,CAAC;IACF,IAAI,OAAO,OAAO,CAAC,kBAAkB,KAAK,UAAU;QAClD,MAAM,IAAI,KAAK,CACb,oGAAoG,CACrG,CAAC;IACJ,OAAO,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;AACjE,CAAC"}
|
|
1
|
+
{"version":3,"file":"diagram-artifact-service.js","sourceRoot":"","sources":["../../src/services/diagram-artifact-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.
|
|
6
|
-
"pluginVersion": "2.6.
|
|
5
|
+
"pipelineVersion": "0.51.0",
|
|
6
|
+
"pluginVersion": "2.6.3",
|
|
7
7
|
"adapters": [
|
|
8
8
|
{
|
|
9
9
|
"id": "claude-code",
|
|
10
|
-
"version": "2.6.
|
|
10
|
+
"version": "2.6.3",
|
|
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.6.
|
|
22
|
+
"version": "2.6.3",
|
|
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.6.
|
|
34
|
+
"version": "2.6.3",
|
|
35
35
|
"capabilityLevel": "workflow",
|
|
36
36
|
"installScopes": [
|
|
37
37
|
"project"
|
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
"name": "AsemDevs"
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
|
-
"version": "2.6.
|
|
8
|
+
"version": "2.6.3",
|
|
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.6.
|
|
15
|
+
"version": "2.6.3",
|
|
16
16
|
"description": "Host-native OpenPlanr skills and role agents for Claude Code.",
|
|
17
17
|
"strict": true
|
|
18
18
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"files": [
|
|
9
9
|
{
|
|
10
10
|
"path": ".claude-plugin/plugin.json",
|
|
11
|
-
"digest": "sha256:
|
|
11
|
+
"digest": "sha256:34ce806adbdb448840283188ddde1b3a21d1f0fd24f7a4b54c9b177439300af3"
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
14
|
"path": "agents/planr-backend.md",
|
|
@@ -424,7 +424,7 @@
|
|
|
424
424
|
},
|
|
425
425
|
{
|
|
426
426
|
"path": "skills/design-loop/scripts/design.mjs",
|
|
427
|
-
"digest": "sha256:
|
|
427
|
+
"digest": "sha256:7a554ec4a32ea6caa6f3bb9f9e9059d586527afd73e33feb708739b0bb75c627"
|
|
428
428
|
},
|
|
429
429
|
{
|
|
430
430
|
"path": "skills/design-loop/scripts/runtime/notices/entities.txt",
|
|
@@ -472,7 +472,7 @@
|
|
|
472
472
|
},
|
|
473
473
|
{
|
|
474
474
|
"path": "skills/design-loop/scripts/runtime/packages/protocol/package.json",
|
|
475
|
-
"digest": "sha256:
|
|
475
|
+
"digest": "sha256:6e51f9d61b978532cd129f442a4e88f9f3900e58a7239427ec264c34a1337ac3"
|
|
476
476
|
},
|
|
477
477
|
{
|
|
478
478
|
"path": "skills/design-loop/scripts/runtime/packages/protocol/registry/artifact-theme.json",
|
|
@@ -612,7 +612,7 @@
|
|
|
612
612
|
},
|
|
613
613
|
{
|
|
614
614
|
"path": "skills/design-review/scripts/design.mjs",
|
|
615
|
-
"digest": "sha256:
|
|
615
|
+
"digest": "sha256:7a554ec4a32ea6caa6f3bb9f9e9059d586527afd73e33feb708739b0bb75c627"
|
|
616
616
|
},
|
|
617
617
|
{
|
|
618
618
|
"path": "skills/design-review/scripts/runtime/notices/entities.txt",
|
|
@@ -660,7 +660,7 @@
|
|
|
660
660
|
},
|
|
661
661
|
{
|
|
662
662
|
"path": "skills/design-review/scripts/runtime/packages/protocol/package.json",
|
|
663
|
-
"digest": "sha256:
|
|
663
|
+
"digest": "sha256:6e51f9d61b978532cd129f442a4e88f9f3900e58a7239427ec264c34a1337ac3"
|
|
664
664
|
},
|
|
665
665
|
{
|
|
666
666
|
"path": "skills/design-review/scripts/runtime/packages/protocol/registry/artifact-theme.json",
|
|
@@ -800,7 +800,7 @@
|
|
|
800
800
|
},
|
|
801
801
|
{
|
|
802
802
|
"path": "skills/design/scripts/design.mjs",
|
|
803
|
-
"digest": "sha256:
|
|
803
|
+
"digest": "sha256:7a554ec4a32ea6caa6f3bb9f9e9059d586527afd73e33feb708739b0bb75c627"
|
|
804
804
|
},
|
|
805
805
|
{
|
|
806
806
|
"path": "skills/design/scripts/runtime/notices/entities.txt",
|
|
@@ -848,7 +848,7 @@
|
|
|
848
848
|
},
|
|
849
849
|
{
|
|
850
850
|
"path": "skills/design/scripts/runtime/packages/protocol/package.json",
|
|
851
|
-
"digest": "sha256:
|
|
851
|
+
"digest": "sha256:6e51f9d61b978532cd129f442a4e88f9f3900e58a7239427ec264c34a1337ac3"
|
|
852
852
|
},
|
|
853
853
|
{
|
|
854
854
|
"path": "skills/design/scripts/runtime/packages/protocol/registry/artifact-theme.json",
|
|
@@ -944,7 +944,7 @@
|
|
|
944
944
|
},
|
|
945
945
|
{
|
|
946
946
|
"path": "skills/diagram/references/diagram-fidelity.md",
|
|
947
|
-
"digest": "sha256:
|
|
947
|
+
"digest": "sha256:25294a35cd4cef3744023d0fcf26bb57585f2fa544f712e54f1dd14d2c773522"
|
|
948
948
|
},
|
|
949
949
|
{
|
|
950
950
|
"path": "skills/diagram/references/diagram-intent-to-ir.md",
|
|
@@ -1048,7 +1048,7 @@
|
|
|
1048
1048
|
},
|
|
1049
1049
|
{
|
|
1050
1050
|
"path": "skills/plan/scripts/design.mjs",
|
|
1051
|
-
"digest": "sha256:
|
|
1051
|
+
"digest": "sha256:7a554ec4a32ea6caa6f3bb9f9e9059d586527afd73e33feb708739b0bb75c627"
|
|
1052
1052
|
},
|
|
1053
1053
|
{
|
|
1054
1054
|
"path": "skills/plan/scripts/planning-ids.mjs",
|
|
@@ -1100,7 +1100,7 @@
|
|
|
1100
1100
|
},
|
|
1101
1101
|
{
|
|
1102
1102
|
"path": "skills/plan/scripts/runtime/packages/protocol/package.json",
|
|
1103
|
-
"digest": "sha256:
|
|
1103
|
+
"digest": "sha256:6e51f9d61b978532cd129f442a4e88f9f3900e58a7239427ec264c34a1337ac3"
|
|
1104
1104
|
},
|
|
1105
1105
|
{
|
|
1106
1106
|
"path": "skills/plan/scripts/runtime/packages/protocol/registry/artifact-theme.json",
|
|
@@ -1291,5 +1291,5 @@
|
|
|
1291
1291
|
"digest": "sha256:53698324b62f43b672ce8fe1654c526c96fb202e313442f09c6fc1e72268677e"
|
|
1292
1292
|
}
|
|
1293
1293
|
],
|
|
1294
|
-
"contentDigest": "sha256:
|
|
1294
|
+
"contentDigest": "sha256:1a0351f2d0376082cd2f9cfe7d9dd297689d87a2565771d0f15bf63a1a78a464"
|
|
1295
1295
|
}
|
|
@@ -14910,6 +14910,7 @@ function createArtifactReviewServer({
|
|
|
14910
14910
|
throw artifactError(ARTIFACT_ERROR_CODES.LOOPBACK_STATE, "Artifact review instance id is invalid.");
|
|
14911
14911
|
}
|
|
14912
14912
|
const sessions = /* @__PURE__ */ new Map();
|
|
14913
|
+
const ownerSessions = /* @__PURE__ */ new Map();
|
|
14913
14914
|
let port = null;
|
|
14914
14915
|
let closePromise = null;
|
|
14915
14916
|
let pendingRegistrations = 0;
|
|
@@ -14917,7 +14918,7 @@ function createArtifactReviewServer({
|
|
|
14917
14918
|
let draining = false;
|
|
14918
14919
|
let emptyTimer = null;
|
|
14919
14920
|
const stageRuntime = () => readFileSync11(STAGE_RUNTIME_PATH, "utf8");
|
|
14920
|
-
const idle = () => sessions.size === 0 && pendingRegistrations === 0 && activeRequests === 0;
|
|
14921
|
+
const idle = () => sessions.size === 0 && ownerSessions.size === 0 && pendingRegistrations === 0 && activeRequests === 0;
|
|
14921
14922
|
const scheduleEmpty = () => {
|
|
14922
14923
|
if (emptyTimer || draining || typeof onEmpty !== "function") return;
|
|
14923
14924
|
emptyTimer = setTimeout(async () => {
|
|
@@ -15042,6 +15043,55 @@ function createArtifactReviewServer({
|
|
|
15042
15043
|
notFound(res, { head });
|
|
15043
15044
|
return;
|
|
15044
15045
|
}
|
|
15046
|
+
if (segments[0] === "o") {
|
|
15047
|
+
const owner = safeSessionId(segments[1]) && ownerSessions.get(segments[1]);
|
|
15048
|
+
if (draining || !sessionMatches(owner, segments[2])) {
|
|
15049
|
+
notFound(res, { head });
|
|
15050
|
+
return;
|
|
15051
|
+
}
|
|
15052
|
+
if (segments.length === 3 && !trailingSlash && ["GET", "HEAD"].includes(req.method)) {
|
|
15053
|
+
send(res, 308, "", { location: `/o/${owner.id}/${owner.capability}/` }, { head });
|
|
15054
|
+
return;
|
|
15055
|
+
}
|
|
15056
|
+
const request2 = Promise.resolve().then(() => owner.handleRequest({
|
|
15057
|
+
req,
|
|
15058
|
+
segments: segments.slice(3),
|
|
15059
|
+
head,
|
|
15060
|
+
origin: `http://${LOOPBACK_HOST}:${port}`,
|
|
15061
|
+
recoveryScope: owner.recoveryScope
|
|
15062
|
+
}));
|
|
15063
|
+
owner.pending.add(request2);
|
|
15064
|
+
let response;
|
|
15065
|
+
try {
|
|
15066
|
+
response = await request2;
|
|
15067
|
+
} finally {
|
|
15068
|
+
owner.pending.delete(request2);
|
|
15069
|
+
}
|
|
15070
|
+
if (!response) {
|
|
15071
|
+
notFound(res, { head });
|
|
15072
|
+
return;
|
|
15073
|
+
}
|
|
15074
|
+
if (response.kind === "asset") {
|
|
15075
|
+
const mediaTypes = { document: "text/html", runtime: "text/javascript", stylesheet: "text/css" };
|
|
15076
|
+
if (!Object.hasOwn(mediaTypes, response.asset) || typeof response.body !== "string") throw new Error("Invalid owner asset response.");
|
|
15077
|
+
send(res, response.status, response.body, {
|
|
15078
|
+
...parentHeaders(),
|
|
15079
|
+
"content-type": `${mediaTypes[response.asset]}; charset=utf-8`,
|
|
15080
|
+
"content-security-policy": "default-src 'none'; script-src 'self'; style-src 'self' 'unsafe-inline'; connect-src 'self'; img-src 'self' data: blob:; font-src 'self'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'"
|
|
15081
|
+
}, { head });
|
|
15082
|
+
return;
|
|
15083
|
+
}
|
|
15084
|
+
send(res, response.status, JSON.stringify(response.body), {
|
|
15085
|
+
// Rejections may precede body consumption (for example Content-Length
|
|
15086
|
+
// above the limit). Do not reuse a socket containing unread body bytes.
|
|
15087
|
+
...response.status >= 400 ? { connection: "close" } : {},
|
|
15088
|
+
"content-type": "application/json; charset=utf-8",
|
|
15089
|
+
"cross-origin-resource-policy": "same-origin",
|
|
15090
|
+
"content-security-policy": "default-src 'none'; frame-ancestors 'none'",
|
|
15091
|
+
"x-frame-options": "DENY"
|
|
15092
|
+
}, { head });
|
|
15093
|
+
return;
|
|
15094
|
+
}
|
|
15045
15095
|
if (segments.length < 3 || segments[0] !== "r" || !safeSessionId(segments[1])) {
|
|
15046
15096
|
notFound(res, { head });
|
|
15047
15097
|
return;
|
|
@@ -15200,6 +15250,32 @@ function createArtifactReviewServer({
|
|
|
15200
15250
|
controlToken,
|
|
15201
15251
|
instanceId,
|
|
15202
15252
|
sessionCount: () => sessions.size,
|
|
15253
|
+
/** Trusted local authority only; this operation has no HTTP control route. */
|
|
15254
|
+
registerOwnerSession({ handleRequest } = {}) {
|
|
15255
|
+
if (draining || closePromise || typeof handleRequest !== "function") {
|
|
15256
|
+
throw artifactError(ARTIFACT_ERROR_CODES.LOOPBACK_STATE, "Local owner session cannot be registered.");
|
|
15257
|
+
}
|
|
15258
|
+
const id4 = mintCapabilityToken({ bytes: SESSION_ID_BYTES });
|
|
15259
|
+
const owner = {
|
|
15260
|
+
id: id4,
|
|
15261
|
+
capability: mintCapabilityToken({ bytes: SESSION_TOKEN_BYTES }),
|
|
15262
|
+
recoveryScope: `diagram-owner_${id4}`,
|
|
15263
|
+
handleRequest,
|
|
15264
|
+
pending: /* @__PURE__ */ new Set()
|
|
15265
|
+
};
|
|
15266
|
+
ownerSessions.set(id4, owner);
|
|
15267
|
+
return Object.freeze({
|
|
15268
|
+
sessionId: id4,
|
|
15269
|
+
capability: owner.capability,
|
|
15270
|
+
recoveryScope: owner.recoveryScope,
|
|
15271
|
+
path: `/o/${id4}/${owner.capability}/`,
|
|
15272
|
+
async close() {
|
|
15273
|
+
ownerSessions.delete(id4);
|
|
15274
|
+
await Promise.allSettled([...owner.pending]);
|
|
15275
|
+
if (idle()) scheduleEmpty();
|
|
15276
|
+
}
|
|
15277
|
+
});
|
|
15278
|
+
},
|
|
15203
15279
|
isIdle: idle,
|
|
15204
15280
|
accepting: () => !draining && !closePromise,
|
|
15205
15281
|
beginCloseIfIdle() {
|
|
@@ -15224,6 +15300,9 @@ function createArtifactReviewServer({
|
|
|
15224
15300
|
emptyTimer = null;
|
|
15225
15301
|
closePromise = (async () => {
|
|
15226
15302
|
sessions.clear();
|
|
15303
|
+
const pendingOwners = [...ownerSessions.values()].flatMap((owner) => [...owner.pending]);
|
|
15304
|
+
ownerSessions.clear();
|
|
15305
|
+
await Promise.allSettled(pendingOwners);
|
|
15227
15306
|
await closeHttpServer(server);
|
|
15228
15307
|
})();
|
|
15229
15308
|
return closePromise;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openplanr/protocol",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Canonical OpenPlanr schemas, registries, typed errors, and portable contract validation",
|
|
6
6
|
"license": "MIT",
|
|
@@ -83,6 +83,10 @@
|
|
|
83
83
|
"./enterprise-contracts": {
|
|
84
84
|
"types": "./src/enterprise-contracts.d.mts",
|
|
85
85
|
"import": "./src/enterprise-contracts.mjs"
|
|
86
|
+
},
|
|
87
|
+
"./diagram-authoring-contracts": {
|
|
88
|
+
"types": "./src/diagram-authoring-contracts.d.mts",
|
|
89
|
+
"import": "./src/diagram-authoring-contracts.mjs"
|
|
86
90
|
}
|
|
87
91
|
},
|
|
88
92
|
"files": [
|
|
@@ -14910,6 +14910,7 @@ function createArtifactReviewServer({
|
|
|
14910
14910
|
throw artifactError(ARTIFACT_ERROR_CODES.LOOPBACK_STATE, "Artifact review instance id is invalid.");
|
|
14911
14911
|
}
|
|
14912
14912
|
const sessions = /* @__PURE__ */ new Map();
|
|
14913
|
+
const ownerSessions = /* @__PURE__ */ new Map();
|
|
14913
14914
|
let port = null;
|
|
14914
14915
|
let closePromise = null;
|
|
14915
14916
|
let pendingRegistrations = 0;
|
|
@@ -14917,7 +14918,7 @@ function createArtifactReviewServer({
|
|
|
14917
14918
|
let draining = false;
|
|
14918
14919
|
let emptyTimer = null;
|
|
14919
14920
|
const stageRuntime = () => readFileSync11(STAGE_RUNTIME_PATH, "utf8");
|
|
14920
|
-
const idle = () => sessions.size === 0 && pendingRegistrations === 0 && activeRequests === 0;
|
|
14921
|
+
const idle = () => sessions.size === 0 && ownerSessions.size === 0 && pendingRegistrations === 0 && activeRequests === 0;
|
|
14921
14922
|
const scheduleEmpty = () => {
|
|
14922
14923
|
if (emptyTimer || draining || typeof onEmpty !== "function") return;
|
|
14923
14924
|
emptyTimer = setTimeout(async () => {
|
|
@@ -15042,6 +15043,55 @@ function createArtifactReviewServer({
|
|
|
15042
15043
|
notFound(res, { head });
|
|
15043
15044
|
return;
|
|
15044
15045
|
}
|
|
15046
|
+
if (segments[0] === "o") {
|
|
15047
|
+
const owner = safeSessionId(segments[1]) && ownerSessions.get(segments[1]);
|
|
15048
|
+
if (draining || !sessionMatches(owner, segments[2])) {
|
|
15049
|
+
notFound(res, { head });
|
|
15050
|
+
return;
|
|
15051
|
+
}
|
|
15052
|
+
if (segments.length === 3 && !trailingSlash && ["GET", "HEAD"].includes(req.method)) {
|
|
15053
|
+
send(res, 308, "", { location: `/o/${owner.id}/${owner.capability}/` }, { head });
|
|
15054
|
+
return;
|
|
15055
|
+
}
|
|
15056
|
+
const request2 = Promise.resolve().then(() => owner.handleRequest({
|
|
15057
|
+
req,
|
|
15058
|
+
segments: segments.slice(3),
|
|
15059
|
+
head,
|
|
15060
|
+
origin: `http://${LOOPBACK_HOST}:${port}`,
|
|
15061
|
+
recoveryScope: owner.recoveryScope
|
|
15062
|
+
}));
|
|
15063
|
+
owner.pending.add(request2);
|
|
15064
|
+
let response;
|
|
15065
|
+
try {
|
|
15066
|
+
response = await request2;
|
|
15067
|
+
} finally {
|
|
15068
|
+
owner.pending.delete(request2);
|
|
15069
|
+
}
|
|
15070
|
+
if (!response) {
|
|
15071
|
+
notFound(res, { head });
|
|
15072
|
+
return;
|
|
15073
|
+
}
|
|
15074
|
+
if (response.kind === "asset") {
|
|
15075
|
+
const mediaTypes = { document: "text/html", runtime: "text/javascript", stylesheet: "text/css" };
|
|
15076
|
+
if (!Object.hasOwn(mediaTypes, response.asset) || typeof response.body !== "string") throw new Error("Invalid owner asset response.");
|
|
15077
|
+
send(res, response.status, response.body, {
|
|
15078
|
+
...parentHeaders(),
|
|
15079
|
+
"content-type": `${mediaTypes[response.asset]}; charset=utf-8`,
|
|
15080
|
+
"content-security-policy": "default-src 'none'; script-src 'self'; style-src 'self' 'unsafe-inline'; connect-src 'self'; img-src 'self' data: blob:; font-src 'self'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'"
|
|
15081
|
+
}, { head });
|
|
15082
|
+
return;
|
|
15083
|
+
}
|
|
15084
|
+
send(res, response.status, JSON.stringify(response.body), {
|
|
15085
|
+
// Rejections may precede body consumption (for example Content-Length
|
|
15086
|
+
// above the limit). Do not reuse a socket containing unread body bytes.
|
|
15087
|
+
...response.status >= 400 ? { connection: "close" } : {},
|
|
15088
|
+
"content-type": "application/json; charset=utf-8",
|
|
15089
|
+
"cross-origin-resource-policy": "same-origin",
|
|
15090
|
+
"content-security-policy": "default-src 'none'; frame-ancestors 'none'",
|
|
15091
|
+
"x-frame-options": "DENY"
|
|
15092
|
+
}, { head });
|
|
15093
|
+
return;
|
|
15094
|
+
}
|
|
15045
15095
|
if (segments.length < 3 || segments[0] !== "r" || !safeSessionId(segments[1])) {
|
|
15046
15096
|
notFound(res, { head });
|
|
15047
15097
|
return;
|
|
@@ -15200,6 +15250,32 @@ function createArtifactReviewServer({
|
|
|
15200
15250
|
controlToken,
|
|
15201
15251
|
instanceId,
|
|
15202
15252
|
sessionCount: () => sessions.size,
|
|
15253
|
+
/** Trusted local authority only; this operation has no HTTP control route. */
|
|
15254
|
+
registerOwnerSession({ handleRequest } = {}) {
|
|
15255
|
+
if (draining || closePromise || typeof handleRequest !== "function") {
|
|
15256
|
+
throw artifactError(ARTIFACT_ERROR_CODES.LOOPBACK_STATE, "Local owner session cannot be registered.");
|
|
15257
|
+
}
|
|
15258
|
+
const id4 = mintCapabilityToken({ bytes: SESSION_ID_BYTES });
|
|
15259
|
+
const owner = {
|
|
15260
|
+
id: id4,
|
|
15261
|
+
capability: mintCapabilityToken({ bytes: SESSION_TOKEN_BYTES }),
|
|
15262
|
+
recoveryScope: `diagram-owner_${id4}`,
|
|
15263
|
+
handleRequest,
|
|
15264
|
+
pending: /* @__PURE__ */ new Set()
|
|
15265
|
+
};
|
|
15266
|
+
ownerSessions.set(id4, owner);
|
|
15267
|
+
return Object.freeze({
|
|
15268
|
+
sessionId: id4,
|
|
15269
|
+
capability: owner.capability,
|
|
15270
|
+
recoveryScope: owner.recoveryScope,
|
|
15271
|
+
path: `/o/${id4}/${owner.capability}/`,
|
|
15272
|
+
async close() {
|
|
15273
|
+
ownerSessions.delete(id4);
|
|
15274
|
+
await Promise.allSettled([...owner.pending]);
|
|
15275
|
+
if (idle()) scheduleEmpty();
|
|
15276
|
+
}
|
|
15277
|
+
});
|
|
15278
|
+
},
|
|
15203
15279
|
isIdle: idle,
|
|
15204
15280
|
accepting: () => !draining && !closePromise,
|
|
15205
15281
|
beginCloseIfIdle() {
|
|
@@ -15224,6 +15300,9 @@ function createArtifactReviewServer({
|
|
|
15224
15300
|
emptyTimer = null;
|
|
15225
15301
|
closePromise = (async () => {
|
|
15226
15302
|
sessions.clear();
|
|
15303
|
+
const pendingOwners = [...ownerSessions.values()].flatMap((owner) => [...owner.pending]);
|
|
15304
|
+
ownerSessions.clear();
|
|
15305
|
+
await Promise.allSettled(pendingOwners);
|
|
15227
15306
|
await closeHttpServer(server);
|
|
15228
15307
|
})();
|
|
15229
15308
|
return closePromise;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openplanr/protocol",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Canonical OpenPlanr schemas, registries, typed errors, and portable contract validation",
|
|
6
6
|
"license": "MIT",
|
|
@@ -83,6 +83,10 @@
|
|
|
83
83
|
"./enterprise-contracts": {
|
|
84
84
|
"types": "./src/enterprise-contracts.d.mts",
|
|
85
85
|
"import": "./src/enterprise-contracts.mjs"
|
|
86
|
+
},
|
|
87
|
+
"./diagram-authoring-contracts": {
|
|
88
|
+
"types": "./src/diagram-authoring-contracts.d.mts",
|
|
89
|
+
"import": "./src/diagram-authoring-contracts.mjs"
|
|
86
90
|
}
|
|
87
91
|
},
|
|
88
92
|
"files": [
|