openplanr 2.2639.4 → 2.2640.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/dist/cli/commands/github.d.ts.map +1 -1
- package/dist/cli/commands/github.js +4 -3
- package/dist/cli/commands/github.js.map +1 -1
- package/dist/dashboard/.vite/manifest.json +1 -1
- package/dist/dashboard/assets/{index-p83hrHZD.js → index-9DLb9EO5.js} +2 -2
- package/dist/dashboard/assets/{index-p83hrHZD.js.map → index-9DLb9EO5.js.map} +1 -1
- package/dist/dashboard/dashboard-manifest.json +13 -13
- package/dist/dashboard/index.html +1 -1
- package/dist/models/schema.d.ts.map +1 -1
- package/dist/models/schema.js +24 -1
- package/dist/models/schema.js.map +1 -1
- package/dist/services/artifact-service.js +2 -2
- package/dist/services/artifact-service.js.map +1 -1
- package/dist/services/github-service.d.ts +6 -4
- package/dist/services/github-service.d.ts.map +1 -1
- package/dist/services/github-service.js +7 -2
- package/dist/services/github-service.js.map +1 -1
- package/dist/services/id-service.d.ts +4 -1
- package/dist/services/id-service.d.ts.map +1 -1
- package/dist/services/id-service.js +28 -15
- package/dist/services/id-service.js.map +1 -1
- package/dist/services/landing/receipt-custody.d.ts.map +1 -1
- package/dist/services/landing/receipt-custody.js +2 -0
- package/dist/services/landing/receipt-custody.js.map +1 -1
- package/dist/services/report-linter-service.d.ts.map +1 -1
- package/dist/services/report-linter-service.js +2 -4
- package/dist/services/report-linter-service.js.map +1 -1
- package/docs/CLI.md +2 -0
- 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/icon.svg +11 -0
- package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +8 -3
- package/lib/host-packages/claude/openplanr/.openplanr-content.json +160 -28
- package/lib/host-packages/claude/openplanr/README.md +4 -3
- package/lib/host-packages/claude/openplanr/skills/ceo-review/SKILL.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/chair-review/SKILL.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/challenger-review/SKILL.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/cmo-review/SKILL.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/coo-review/SKILL.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/cpo-review/SKILL.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/cto-review/SKILL.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/design/openplanr.skill.json +88 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design.mjs +83 -21459
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/claude/openplanr/skills/design-loop/openplanr.skill.json +88 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design.mjs +83 -21459
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/claude/openplanr/skills/design-review/openplanr.skill.json +88 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design.mjs +83 -21459
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/claude/openplanr/skills/plan/openplanr.skill.json +88 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design.mjs +83 -21459
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/claude/openplanr/skills/sync/SKILL.md +17 -6
- package/lib/host-packages/claude/openplanr/skills/sync/scripts/sync.mjs +7 -104
- package/lib/host-packages/cursor/openplanr/.openplanr-content.json +144 -16
- package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design.mjs +83 -21459
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design.mjs +83 -21459
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design.mjs +83 -21459
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design.mjs +83 -21459
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-sync/scripts/sync.mjs +7 -104
- package/lib/host-packages/cursor/openplanr/rules/planr-sync.mdc +17 -6
- package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
- package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +3 -2
- package/lib/host-packages/openai/openplanr/.openplanr-content.json +155 -27
- package/lib/host-packages/openai/openplanr/skills/ceo-review/SKILL.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/chair-review/SKILL.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/challenger-review/SKILL.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/cmo-review/SKILL.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/coo-review/SKILL.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/cpo-review/SKILL.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/cto-review/SKILL.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/design/openplanr.skill.json +88 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design.mjs +83 -21459
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/openai/openplanr/skills/design-loop/openplanr.skill.json +88 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design.mjs +83 -21459
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/openai/openplanr/skills/design-review/openplanr.skill.json +88 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design.mjs +83 -21459
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/openai/openplanr/skills/plan/openplanr.skill.json +88 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design.mjs +83 -21459
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/openai/openplanr/skills/sync/SKILL.md +17 -6
- package/lib/host-packages/openai/openplanr/skills/sync/scripts/sync.mjs +7 -104
- package/lib/integrations.d.mts +0 -10
- package/lib/integrations.mjs +7 -104
- package/package.json +2 -2
|
@@ -7,16 +7,27 @@ license: MIT
|
|
|
7
7
|
# Planr Sync
|
|
8
8
|
|
|
9
9
|
Reconcile local planning artifacts and, when requested, GitHub or Linear state.
|
|
10
|
-
Reason about conflicts in this active session; deterministic mapping and
|
|
11
|
-
may use a host connector or the packaged [sync helper](scripts/sync.mjs).
|
|
12
|
-
|
|
10
|
+
Reason about conflicts in this active session; deterministic mapping and GitHub
|
|
11
|
+
transport may use a host connector or the packaged [sync helper](scripts/sync.mjs).
|
|
12
|
+
Local and GitHub work never require the OpenPlanr CLI.
|
|
13
13
|
|
|
14
14
|
Resolution order:
|
|
15
15
|
|
|
16
16
|
1. use a host-native GitHub or Linear connector when available;
|
|
17
|
-
2. otherwise use the packaged deterministic helper;
|
|
18
|
-
3.
|
|
19
|
-
|
|
17
|
+
2. otherwise, for GitHub, use the packaged deterministic helper;
|
|
18
|
+
3. otherwise, for Linear, use the `planr linear` terminal utility when the user has
|
|
19
|
+
installed it; `planr github` and `planr sync` are optional equivalents for the rest.
|
|
20
|
+
|
|
21
|
+
Linear through the CLI:
|
|
22
|
+
|
|
23
|
+
- the user runs `planr linear init` in a terminal once; it prompts for a personal
|
|
24
|
+
access token, which the CLI stores;
|
|
25
|
+
- audit with `planr linear sync --dry-run`, which reads Linear without writing;
|
|
26
|
+
- before a real `planr linear sync`, ask how conflicts should resolve and pass
|
|
27
|
+
`--on-conflict local` or `--on-conflict linear`; without a prompt it favors Linear;
|
|
28
|
+
- `planr linear push <artifact-id>` creates or updates Linear issues; preview with
|
|
29
|
+
`--dry-run`. Quick tasks and backlog items need `linear.standaloneProjectId` in the
|
|
30
|
+
project config when no terminal prompt is available.
|
|
20
31
|
|
|
21
32
|
Audit is read-only by default. Apply local changes only when the request asks for
|
|
22
33
|
reconciliation, and push remote changes only when the request asks for external
|
|
@@ -7,7 +7,6 @@ import { fileURLToPath } from 'node:url';
|
|
|
7
7
|
import { promisify } from 'node:util';
|
|
8
8
|
|
|
9
9
|
const execFileAsync = promisify(execFile);
|
|
10
|
-
const LINEAR_ENDPOINT = 'https://api.linear.app/graphql';
|
|
11
10
|
const LINEAR_UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu;
|
|
12
11
|
const LINEAR_IDENTIFIER = /^[A-Z][A-Z0-9]+-\d+$/u;
|
|
13
12
|
|
|
@@ -102,100 +101,6 @@ export async function executeGitHubOperations(
|
|
|
102
101
|
return { provider: 'github', applied: true, results };
|
|
103
102
|
}
|
|
104
103
|
|
|
105
|
-
async function linearRequest(query, variables, token, fetchImpl = fetch) {
|
|
106
|
-
if (!token)
|
|
107
|
-
throw new IntegrationError('E_LINEAR_CREDENTIAL', 'Linear credentials are unavailable.');
|
|
108
|
-
let response;
|
|
109
|
-
let payload;
|
|
110
|
-
try {
|
|
111
|
-
response = await fetchImpl(LINEAR_ENDPOINT, {
|
|
112
|
-
method: 'POST',
|
|
113
|
-
headers: { authorization: token, 'content-type': 'application/json' },
|
|
114
|
-
body: JSON.stringify({ query, variables }),
|
|
115
|
-
});
|
|
116
|
-
payload = await response.json();
|
|
117
|
-
} catch (error) {
|
|
118
|
-
throw new IntegrationError('E_LINEAR_API', 'Linear synchronization transport failed.', {
|
|
119
|
-
cause: String(error?.message ?? error),
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
if (!response.ok || !payload || typeof payload !== 'object' || payload.errors?.length) {
|
|
123
|
-
throw new IntegrationError('E_LINEAR_API', 'Linear rejected the synchronization request.', {
|
|
124
|
-
status: response.status,
|
|
125
|
-
errors: payload?.errors,
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
return payload.data;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
function requireLinearMutationResult(data, field) {
|
|
132
|
-
const result = data?.[field];
|
|
133
|
-
const issue = result?.issue;
|
|
134
|
-
if (
|
|
135
|
-
result?.success !== true ||
|
|
136
|
-
!issue ||
|
|
137
|
-
typeof issue.id !== 'string' ||
|
|
138
|
-
typeof issue.identifier !== 'string' ||
|
|
139
|
-
typeof issue.url !== 'string'
|
|
140
|
-
) {
|
|
141
|
-
throw new IntegrationError(
|
|
142
|
-
'E_LINEAR_API',
|
|
143
|
-
`Linear ${field} did not confirm a successful issue mutation.`,
|
|
144
|
-
{
|
|
145
|
-
field,
|
|
146
|
-
success: result?.success ?? null,
|
|
147
|
-
},
|
|
148
|
-
);
|
|
149
|
-
}
|
|
150
|
-
return issue;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
export async function inspectLinear({ token = process.env.PLANR_LINEAR_TOKEN } = {}) {
|
|
154
|
-
const data = await linearRequest('query OpenPlanrViewer { viewer { id name email } }', {}, token);
|
|
155
|
-
return { provider: 'linear', viewer: data.viewer };
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
export async function executeLinearOperations(
|
|
159
|
-
operations,
|
|
160
|
-
{ token = process.env.PLANR_LINEAR_TOKEN, apply = false } = {},
|
|
161
|
-
) {
|
|
162
|
-
if (!Array.isArray(operations))
|
|
163
|
-
throw new IntegrationError('E_SYNC_INPUT', 'Linear operations must be an array.');
|
|
164
|
-
if (!apply) return { provider: 'linear', applied: false, operations };
|
|
165
|
-
const results = [];
|
|
166
|
-
for (const operation of operations) {
|
|
167
|
-
if (operation.action === 'create' && operation.teamId) {
|
|
168
|
-
const data = await linearRequest(
|
|
169
|
-
'mutation OpenPlanrCreate($input: IssueCreateInput!) { issueCreate(input: $input) { success issue { id identifier url } } }',
|
|
170
|
-
{
|
|
171
|
-
input: { teamId: operation.teamId, title: operation.title, description: operation.body },
|
|
172
|
-
},
|
|
173
|
-
token,
|
|
174
|
-
);
|
|
175
|
-
results.push({ action: 'create', ...requireLinearMutationResult(data, 'issueCreate') });
|
|
176
|
-
continue;
|
|
177
|
-
}
|
|
178
|
-
if (operation.action === 'update' && isLikelyLinearIssueId(operation.id)) {
|
|
179
|
-
const data = await linearRequest(
|
|
180
|
-
'mutation OpenPlanrUpdate($id: String!, $input: IssueUpdateInput!) { issueUpdate(id: $id, input: $input) { success issue { id identifier url } } }',
|
|
181
|
-
{
|
|
182
|
-
id: operation.id,
|
|
183
|
-
input: { title: operation.title, description: operation.body, stateId: operation.state },
|
|
184
|
-
},
|
|
185
|
-
token,
|
|
186
|
-
);
|
|
187
|
-
results.push({ action: 'update', ...requireLinearMutationResult(data, 'issueUpdate') });
|
|
188
|
-
continue;
|
|
189
|
-
}
|
|
190
|
-
throw new IntegrationError(
|
|
191
|
-
'E_SYNC_OPERATION',
|
|
192
|
-
'Unsupported Linear synchronization operation.',
|
|
193
|
-
{ operation },
|
|
194
|
-
);
|
|
195
|
-
}
|
|
196
|
-
return { provider: 'linear', applied: true, results };
|
|
197
|
-
}
|
|
198
|
-
|
|
199
104
|
async function readJsonInput(value, stdin) {
|
|
200
105
|
if (value) return JSON.parse(await readFile(resolve(value), 'utf8'));
|
|
201
106
|
let bytes = '';
|
|
@@ -226,7 +131,7 @@ function parseArgs(argv) {
|
|
|
226
131
|
|
|
227
132
|
export async function runPortableSync(
|
|
228
133
|
argv = process.argv.slice(2),
|
|
229
|
-
{ cwd = process.cwd(),
|
|
134
|
+
{ cwd = process.cwd(), stdin = process.stdin, stdout = process.stdout } = {},
|
|
230
135
|
) {
|
|
231
136
|
const args = parseArgs(argv);
|
|
232
137
|
let result;
|
|
@@ -238,17 +143,15 @@ export async function runPortableSync(
|
|
|
238
143
|
cwd,
|
|
239
144
|
apply: args.apply,
|
|
240
145
|
});
|
|
241
|
-
} else if (args.provider === 'linear'
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
apply: args.apply,
|
|
247
|
-
});
|
|
146
|
+
} else if (args.provider === 'linear') {
|
|
147
|
+
throw new IntegrationError(
|
|
148
|
+
'E_SYNC_USAGE',
|
|
149
|
+
'Linear synchronization runs through a Linear connector or the planr CLI (planr linear push, planr linear sync).',
|
|
150
|
+
);
|
|
248
151
|
} else {
|
|
249
152
|
throw new IntegrationError(
|
|
250
153
|
'E_SYNC_USAGE',
|
|
251
|
-
'Usage: sync.mjs <local|github
|
|
154
|
+
'Usage: sync.mjs <local|github> <inspect|sync> [--input path] [--apply]',
|
|
252
155
|
);
|
|
253
156
|
}
|
|
254
157
|
stdout.write(`${JSON.stringify(result, null, 2)}\n`);
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"files": [
|
|
9
9
|
{
|
|
10
10
|
"path": "manifest.json",
|
|
11
|
-
"digest": "sha256:
|
|
11
|
+
"digest": "sha256:093b371ba4c633cc73d7e465246928be9f445bf0399682712181f6d1f9593684"
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
14
|
"path": "rules/planr-artifact.mdc",
|
|
@@ -242,9 +242,41 @@
|
|
|
242
242
|
"path": "rules/planr-design-loop/schemas/design-review-handoff.schema.json",
|
|
243
243
|
"digest": "sha256:402b25238f93f8269b98697bf77fa11dda1fd284f44e41d73cdb813f5244a4e0"
|
|
244
244
|
},
|
|
245
|
+
{
|
|
246
|
+
"path": "rules/planr-design-loop/scripts/design-artifact-shell.mjs",
|
|
247
|
+
"digest": "sha256:9245a86f8e3f20f6ec4c705d1364d2d6d3e639b34a7d41162769a0f490dd39df"
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"path": "rules/planr-design-loop/scripts/design-document.mjs",
|
|
251
|
+
"digest": "sha256:7e15b9f9e9afd29be2a2558fad9e57b5df85e494a586180d5afe23015cdbcfb7"
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"path": "rules/planr-design-loop/scripts/design-entities.mjs",
|
|
255
|
+
"digest": "sha256:376ec35d0f184deac31b639f2c0918e6b0f165e19984ed1c89ba2cfad6af9b80"
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
"path": "rules/planr-design-loop/scripts/design-parse5-parser.mjs",
|
|
259
|
+
"digest": "sha256:a9bfeecae4d31155a6935455c82ea8348da25f8585216b531d00c6599b8196e4"
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"path": "rules/planr-design-loop/scripts/design-parse5-tokenizer.mjs",
|
|
263
|
+
"digest": "sha256:f655474fb8d0bed732f01ace5b67102f849b73cb40831a57f1fb7b61180fbde9"
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
"path": "rules/planr-design-loop/scripts/design-review-handoff.mjs",
|
|
267
|
+
"digest": "sha256:1d04e0d821738f3934fb3fbd314b161fb557f4459cf2da2d1921c99d27d7d861"
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"path": "rules/planr-design-loop/scripts/design-sandbox-guards.mjs",
|
|
271
|
+
"digest": "sha256:dcc7aa1971da47018a198bfe7520c05e3e5ba21fe2d9c8fffcaad882ded5bbbb"
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
"path": "rules/planr-design-loop/scripts/design-share.mjs",
|
|
275
|
+
"digest": "sha256:b10d7ce9cdb3eb48b9aca803e4d2ecc4f8e477e91f4a0c6a3ae17a1f7985aa06"
|
|
276
|
+
},
|
|
245
277
|
{
|
|
246
278
|
"path": "rules/planr-design-loop/scripts/design.mjs",
|
|
247
|
-
"digest": "sha256:
|
|
279
|
+
"digest": "sha256:ab33412cab749120e07359983f85bcb64038026844c06ff9f464c4f371d6d6ca"
|
|
248
280
|
},
|
|
249
281
|
{
|
|
250
282
|
"path": "rules/planr-design-loop/scripts/runtime/notices/entities.txt",
|
|
@@ -280,11 +312,11 @@
|
|
|
280
312
|
},
|
|
281
313
|
{
|
|
282
314
|
"path": "rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/studio.js",
|
|
283
|
-
"digest": "sha256:
|
|
315
|
+
"digest": "sha256:85f8b084457aaa172025fb878b64059782cb976f72451b207c7bc40e8c982bb8"
|
|
284
316
|
},
|
|
285
317
|
{
|
|
286
318
|
"path": "rules/planr-design-loop/scripts/runtime/packages/protocol/package.json",
|
|
287
|
-
"digest": "sha256:
|
|
319
|
+
"digest": "sha256:931a50e413656f4dcd95db2451b5fc63c985b13494b4b01b492d8292529f4fcb"
|
|
288
320
|
},
|
|
289
321
|
{
|
|
290
322
|
"path": "rules/planr-design-loop/scripts/runtime/packages/protocol/registries/artifact-theme.json",
|
|
@@ -418,9 +450,41 @@
|
|
|
418
450
|
"path": "rules/planr-design-review/schemas/design-review-handoff.schema.json",
|
|
419
451
|
"digest": "sha256:402b25238f93f8269b98697bf77fa11dda1fd284f44e41d73cdb813f5244a4e0"
|
|
420
452
|
},
|
|
453
|
+
{
|
|
454
|
+
"path": "rules/planr-design-review/scripts/design-artifact-shell.mjs",
|
|
455
|
+
"digest": "sha256:9245a86f8e3f20f6ec4c705d1364d2d6d3e639b34a7d41162769a0f490dd39df"
|
|
456
|
+
},
|
|
457
|
+
{
|
|
458
|
+
"path": "rules/planr-design-review/scripts/design-document.mjs",
|
|
459
|
+
"digest": "sha256:7e15b9f9e9afd29be2a2558fad9e57b5df85e494a586180d5afe23015cdbcfb7"
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
"path": "rules/planr-design-review/scripts/design-entities.mjs",
|
|
463
|
+
"digest": "sha256:376ec35d0f184deac31b639f2c0918e6b0f165e19984ed1c89ba2cfad6af9b80"
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
"path": "rules/planr-design-review/scripts/design-parse5-parser.mjs",
|
|
467
|
+
"digest": "sha256:a9bfeecae4d31155a6935455c82ea8348da25f8585216b531d00c6599b8196e4"
|
|
468
|
+
},
|
|
469
|
+
{
|
|
470
|
+
"path": "rules/planr-design-review/scripts/design-parse5-tokenizer.mjs",
|
|
471
|
+
"digest": "sha256:f655474fb8d0bed732f01ace5b67102f849b73cb40831a57f1fb7b61180fbde9"
|
|
472
|
+
},
|
|
473
|
+
{
|
|
474
|
+
"path": "rules/planr-design-review/scripts/design-review-handoff.mjs",
|
|
475
|
+
"digest": "sha256:1d04e0d821738f3934fb3fbd314b161fb557f4459cf2da2d1921c99d27d7d861"
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
"path": "rules/planr-design-review/scripts/design-sandbox-guards.mjs",
|
|
479
|
+
"digest": "sha256:dcc7aa1971da47018a198bfe7520c05e3e5ba21fe2d9c8fffcaad882ded5bbbb"
|
|
480
|
+
},
|
|
481
|
+
{
|
|
482
|
+
"path": "rules/planr-design-review/scripts/design-share.mjs",
|
|
483
|
+
"digest": "sha256:b10d7ce9cdb3eb48b9aca803e4d2ecc4f8e477e91f4a0c6a3ae17a1f7985aa06"
|
|
484
|
+
},
|
|
421
485
|
{
|
|
422
486
|
"path": "rules/planr-design-review/scripts/design.mjs",
|
|
423
|
-
"digest": "sha256:
|
|
487
|
+
"digest": "sha256:ab33412cab749120e07359983f85bcb64038026844c06ff9f464c4f371d6d6ca"
|
|
424
488
|
},
|
|
425
489
|
{
|
|
426
490
|
"path": "rules/planr-design-review/scripts/runtime/notices/entities.txt",
|
|
@@ -456,11 +520,11 @@
|
|
|
456
520
|
},
|
|
457
521
|
{
|
|
458
522
|
"path": "rules/planr-design-review/scripts/runtime/packages/design/templates/studio/studio.js",
|
|
459
|
-
"digest": "sha256:
|
|
523
|
+
"digest": "sha256:85f8b084457aaa172025fb878b64059782cb976f72451b207c7bc40e8c982bb8"
|
|
460
524
|
},
|
|
461
525
|
{
|
|
462
526
|
"path": "rules/planr-design-review/scripts/runtime/packages/protocol/package.json",
|
|
463
|
-
"digest": "sha256:
|
|
527
|
+
"digest": "sha256:931a50e413656f4dcd95db2451b5fc63c985b13494b4b01b492d8292529f4fcb"
|
|
464
528
|
},
|
|
465
529
|
{
|
|
466
530
|
"path": "rules/planr-design-review/scripts/runtime/packages/protocol/registries/artifact-theme.json",
|
|
@@ -594,9 +658,41 @@
|
|
|
594
658
|
"path": "rules/planr-design/schemas/design-review-handoff.schema.json",
|
|
595
659
|
"digest": "sha256:402b25238f93f8269b98697bf77fa11dda1fd284f44e41d73cdb813f5244a4e0"
|
|
596
660
|
},
|
|
661
|
+
{
|
|
662
|
+
"path": "rules/planr-design/scripts/design-artifact-shell.mjs",
|
|
663
|
+
"digest": "sha256:9245a86f8e3f20f6ec4c705d1364d2d6d3e639b34a7d41162769a0f490dd39df"
|
|
664
|
+
},
|
|
665
|
+
{
|
|
666
|
+
"path": "rules/planr-design/scripts/design-document.mjs",
|
|
667
|
+
"digest": "sha256:7e15b9f9e9afd29be2a2558fad9e57b5df85e494a586180d5afe23015cdbcfb7"
|
|
668
|
+
},
|
|
669
|
+
{
|
|
670
|
+
"path": "rules/planr-design/scripts/design-entities.mjs",
|
|
671
|
+
"digest": "sha256:376ec35d0f184deac31b639f2c0918e6b0f165e19984ed1c89ba2cfad6af9b80"
|
|
672
|
+
},
|
|
673
|
+
{
|
|
674
|
+
"path": "rules/planr-design/scripts/design-parse5-parser.mjs",
|
|
675
|
+
"digest": "sha256:a9bfeecae4d31155a6935455c82ea8348da25f8585216b531d00c6599b8196e4"
|
|
676
|
+
},
|
|
677
|
+
{
|
|
678
|
+
"path": "rules/planr-design/scripts/design-parse5-tokenizer.mjs",
|
|
679
|
+
"digest": "sha256:f655474fb8d0bed732f01ace5b67102f849b73cb40831a57f1fb7b61180fbde9"
|
|
680
|
+
},
|
|
681
|
+
{
|
|
682
|
+
"path": "rules/planr-design/scripts/design-review-handoff.mjs",
|
|
683
|
+
"digest": "sha256:1d04e0d821738f3934fb3fbd314b161fb557f4459cf2da2d1921c99d27d7d861"
|
|
684
|
+
},
|
|
685
|
+
{
|
|
686
|
+
"path": "rules/planr-design/scripts/design-sandbox-guards.mjs",
|
|
687
|
+
"digest": "sha256:dcc7aa1971da47018a198bfe7520c05e3e5ba21fe2d9c8fffcaad882ded5bbbb"
|
|
688
|
+
},
|
|
689
|
+
{
|
|
690
|
+
"path": "rules/planr-design/scripts/design-share.mjs",
|
|
691
|
+
"digest": "sha256:b10d7ce9cdb3eb48b9aca803e4d2ecc4f8e477e91f4a0c6a3ae17a1f7985aa06"
|
|
692
|
+
},
|
|
597
693
|
{
|
|
598
694
|
"path": "rules/planr-design/scripts/design.mjs",
|
|
599
|
-
"digest": "sha256:
|
|
695
|
+
"digest": "sha256:ab33412cab749120e07359983f85bcb64038026844c06ff9f464c4f371d6d6ca"
|
|
600
696
|
},
|
|
601
697
|
{
|
|
602
698
|
"path": "rules/planr-design/scripts/runtime/notices/entities.txt",
|
|
@@ -632,11 +728,11 @@
|
|
|
632
728
|
},
|
|
633
729
|
{
|
|
634
730
|
"path": "rules/planr-design/scripts/runtime/packages/design/templates/studio/studio.js",
|
|
635
|
-
"digest": "sha256:
|
|
731
|
+
"digest": "sha256:85f8b084457aaa172025fb878b64059782cb976f72451b207c7bc40e8c982bb8"
|
|
636
732
|
},
|
|
637
733
|
{
|
|
638
734
|
"path": "rules/planr-design/scripts/runtime/packages/protocol/package.json",
|
|
639
|
-
"digest": "sha256:
|
|
735
|
+
"digest": "sha256:931a50e413656f4dcd95db2451b5fc63c985b13494b4b01b492d8292529f4fcb"
|
|
640
736
|
},
|
|
641
737
|
{
|
|
642
738
|
"path": "rules/planr-design/scripts/runtime/packages/protocol/registries/artifact-theme.json",
|
|
@@ -802,9 +898,41 @@
|
|
|
802
898
|
"path": "rules/planr-plan/schemas/design-review-handoff.schema.json",
|
|
803
899
|
"digest": "sha256:402b25238f93f8269b98697bf77fa11dda1fd284f44e41d73cdb813f5244a4e0"
|
|
804
900
|
},
|
|
901
|
+
{
|
|
902
|
+
"path": "rules/planr-plan/scripts/design-artifact-shell.mjs",
|
|
903
|
+
"digest": "sha256:9245a86f8e3f20f6ec4c705d1364d2d6d3e639b34a7d41162769a0f490dd39df"
|
|
904
|
+
},
|
|
905
|
+
{
|
|
906
|
+
"path": "rules/planr-plan/scripts/design-document.mjs",
|
|
907
|
+
"digest": "sha256:7e15b9f9e9afd29be2a2558fad9e57b5df85e494a586180d5afe23015cdbcfb7"
|
|
908
|
+
},
|
|
909
|
+
{
|
|
910
|
+
"path": "rules/planr-plan/scripts/design-entities.mjs",
|
|
911
|
+
"digest": "sha256:376ec35d0f184deac31b639f2c0918e6b0f165e19984ed1c89ba2cfad6af9b80"
|
|
912
|
+
},
|
|
913
|
+
{
|
|
914
|
+
"path": "rules/planr-plan/scripts/design-parse5-parser.mjs",
|
|
915
|
+
"digest": "sha256:a9bfeecae4d31155a6935455c82ea8348da25f8585216b531d00c6599b8196e4"
|
|
916
|
+
},
|
|
917
|
+
{
|
|
918
|
+
"path": "rules/planr-plan/scripts/design-parse5-tokenizer.mjs",
|
|
919
|
+
"digest": "sha256:f655474fb8d0bed732f01ace5b67102f849b73cb40831a57f1fb7b61180fbde9"
|
|
920
|
+
},
|
|
921
|
+
{
|
|
922
|
+
"path": "rules/planr-plan/scripts/design-review-handoff.mjs",
|
|
923
|
+
"digest": "sha256:1d04e0d821738f3934fb3fbd314b161fb557f4459cf2da2d1921c99d27d7d861"
|
|
924
|
+
},
|
|
925
|
+
{
|
|
926
|
+
"path": "rules/planr-plan/scripts/design-sandbox-guards.mjs",
|
|
927
|
+
"digest": "sha256:dcc7aa1971da47018a198bfe7520c05e3e5ba21fe2d9c8fffcaad882ded5bbbb"
|
|
928
|
+
},
|
|
929
|
+
{
|
|
930
|
+
"path": "rules/planr-plan/scripts/design-share.mjs",
|
|
931
|
+
"digest": "sha256:b10d7ce9cdb3eb48b9aca803e4d2ecc4f8e477e91f4a0c6a3ae17a1f7985aa06"
|
|
932
|
+
},
|
|
805
933
|
{
|
|
806
934
|
"path": "rules/planr-plan/scripts/design.mjs",
|
|
807
|
-
"digest": "sha256:
|
|
935
|
+
"digest": "sha256:ab33412cab749120e07359983f85bcb64038026844c06ff9f464c4f371d6d6ca"
|
|
808
936
|
},
|
|
809
937
|
{
|
|
810
938
|
"path": "rules/planr-plan/scripts/planning-ids.mjs",
|
|
@@ -844,11 +972,11 @@
|
|
|
844
972
|
},
|
|
845
973
|
{
|
|
846
974
|
"path": "rules/planr-plan/scripts/runtime/packages/design/templates/studio/studio.js",
|
|
847
|
-
"digest": "sha256:
|
|
975
|
+
"digest": "sha256:85f8b084457aaa172025fb878b64059782cb976f72451b207c7bc40e8c982bb8"
|
|
848
976
|
},
|
|
849
977
|
{
|
|
850
978
|
"path": "rules/planr-plan/scripts/runtime/packages/protocol/package.json",
|
|
851
|
-
"digest": "sha256:
|
|
979
|
+
"digest": "sha256:931a50e413656f4dcd95db2451b5fc63c985b13494b4b01b492d8292529f4fcb"
|
|
852
980
|
},
|
|
853
981
|
{
|
|
854
982
|
"path": "rules/planr-plan/scripts/runtime/packages/protocol/registries/artifact-theme.json",
|
|
@@ -1004,12 +1132,12 @@
|
|
|
1004
1132
|
},
|
|
1005
1133
|
{
|
|
1006
1134
|
"path": "rules/planr-sync.mdc",
|
|
1007
|
-
"digest": "sha256:
|
|
1135
|
+
"digest": "sha256:81a59f2c726e53d987105982f8aa334a7e34006ad0c6dd6520537e032e9b7e40"
|
|
1008
1136
|
},
|
|
1009
1137
|
{
|
|
1010
1138
|
"path": "rules/planr-sync/scripts/sync.mjs",
|
|
1011
|
-
"digest": "sha256:
|
|
1139
|
+
"digest": "sha256:005397d703d8df70f346a789d15c665a44329449418b39e807bb0dff927153da"
|
|
1012
1140
|
}
|
|
1013
1141
|
],
|
|
1014
|
-
"contentDigest": "sha256:
|
|
1142
|
+
"contentDigest": "sha256:7c55cf0211b90504db48631acb137211e170a2d5fad2ec03720cd4fd2898faae"
|
|
1015
1143
|
}
|