@mnstry/atelier 0.2.0-alpha.1 → 0.2.0-alpha.10
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 +372 -0
- package/README.md +402 -205
- package/SECURITY.md +6 -1
- package/contracts/atelier-adoption-policy.v1.schema.json +49 -0
- package/contracts/atelier-coauthor.v1.schema.json +163 -0
- package/contracts/atelier-decision-request.v1.schema.json +476 -0
- package/contracts/atelier-decision-result.v1.schema.json +500 -0
- package/contracts/atelier-guide.v1.schema.json +227 -0
- package/contracts/atelier-intake.v1.schema.json +151 -0
- package/contracts/atelier-migration.v2.schema.json +61 -0
- package/contracts/atelier-obsidian-acceptance-receipt.v1.schema.json +211 -0
- package/contracts/atelier-obsidian-apply-policy.v1.schema.json +298 -0
- package/contracts/atelier-obsidian-corpus-profile.v1.schema.json +98 -0
- package/contracts/atelier-obsidian-edit-operation.v1.schema.json +138 -0
- package/contracts/atelier-obsidian-ext-settings.v1.schema.json +287 -0
- package/contracts/atelier-obsidian-generation-manifest.v1.schema.json +353 -0
- package/contracts/atelier-obsidian-proposal-receipt.v1.schema.json +110 -0
- package/contracts/atelier-obsidian-publication-journal.v1.schema.json +167 -0
- package/contracts/atelier-obsidian-scope.v1.schema.json +264 -0
- package/contracts/atelier-obsidian-service-state.v1.schema.json +149 -0
- package/contracts/atelier-obsidian-source-snapshot.v1.schema.json +179 -0
- package/contracts/atelier-pane-presentation.v1.schema.json +76 -0
- package/contracts/atelier-presentation.v1.schema.json +1293 -0
- package/contracts/atelier-repository-observation.v1.schema.json +163 -0
- package/contracts/atelier-review.v1.schema.json +1601 -0
- package/contracts/atelier-skill-steward.v1.schema.json +692 -0
- package/contracts/atelier-upgrade-plan.v2.schema.json +398 -0
- package/contracts/atelier-upgrade-receipt.v1.schema.json +99 -0
- package/contracts/atelier-vault-publication.v1.schema.json +58 -0
- package/contracts/public-api-baseline.json +57 -0
- package/docs/assurance-controls.md +49 -0
- package/docs/atelier-runtime.md +28 -2
- package/docs/atelier-sync.md +172 -0
- package/docs/blocks/audience-visibility.md +9 -0
- package/docs/blocks/claims.md +61 -0
- package/docs/blocks/conformance-admission.md +15 -0
- package/docs/blocks/will-not-do.md +18 -0
- package/docs/coauthor-session.md +57 -0
- package/docs/connected-composition.md +75 -0
- package/docs/continuity.md +3 -4
- package/docs/decisions.md +167 -0
- package/docs/design.md +167 -0
- package/docs/exact-upgrades.md +159 -0
- package/docs/extension-pack-lifecycle.md +33 -0
- package/docs/guided-upgrades.md +99 -0
- package/docs/install.md +99 -16
- package/docs/intake-and-guides.md +65 -0
- package/docs/integration-and-review-plan.md +409 -0
- package/docs/integration-contract-decisions.md +22 -0
- package/docs/knowledge-graph.md +8 -4
- package/docs/local-review.md +84 -0
- package/docs/local-services.md +328 -0
- package/docs/local-state.md +107 -0
- package/docs/obsidian-contract.md +690 -0
- package/docs/obsidian.md +423 -0
- package/docs/portable-presentation.md +328 -0
- package/docs/presentation-consumer-boundaries.md +75 -0
- package/docs/presentation-review-disposition.md +47 -0
- package/docs/project-command-inventory.md +38 -0
- package/docs/project-options.md +53 -0
- package/docs/release-engineering.md +174 -12
- package/docs/repo-boundary-guard.md +12 -2
- package/docs/review-portability.md +55 -0
- package/docs/skill-steward.md +156 -0
- package/docs/upgrade.md +146 -5
- package/docs/vault-service.md +292 -0
- package/fixtures/atelier-coauthor/invalid/authority.v1.json +5 -0
- package/fixtures/atelier-coauthor/valid/config.v1.json +12 -0
- package/fixtures/atelier-guide/invalid/authority.v1.json +11 -0
- package/fixtures/atelier-guide/valid/capability.v1.json +10 -0
- package/fixtures/atelier-guide/valid/consent.v1.json +11 -0
- package/fixtures/atelier-guide/valid/engagement.v1.json +7 -0
- package/fixtures/atelier-guide/valid/offer.v1.json +10 -0
- package/fixtures/atelier-intake/invalid/authority.v1.json +9 -0
- package/fixtures/atelier-intake/valid/attempt.v1.json +8 -0
- package/fixtures/atelier-intake/valid/completion.v1.json +9 -0
- package/fixtures/atelier-intake/valid/source.v1.json +7 -0
- package/fixtures/atelier-repository-observation/invalid/complete-with-blocker.v1.json +18 -0
- package/fixtures/atelier-repository-observation/valid/complete-local.v1.json +48 -0
- package/fixtures/atelier-review/invalid/authenticated-identity.v1.json +22 -0
- package/fixtures/atelier-review/valid/bound.v1.json +229 -0
- package/fixtures/atelier-review/valid/bundle.v1.json +267 -0
- package/fixtures/atelier-review/valid/contribution.v1.json +22 -0
- package/fixtures/atelier-review/valid/lifecycle.v1.json +14 -0
- package/fixtures/atelier-skill-steward/audit/invalid/source-mutation.v1.json +26 -0
- package/fixtures/atelier-skill-steward/audit/valid/clean.v1.json +26 -0
- package/fixtures/atelier-skill-steward/candidates/invalid/workflow-key.v1.json +37 -0
- package/fixtures/atelier-skill-steward/candidates/valid/create.v1.json +37 -0
- package/fixtures/atelier-skill-steward/lock/invalid/bad-digest.v1.json +18 -0
- package/fixtures/atelier-skill-steward/lock/valid/installed.v1.json +23 -0
- package/fixtures/atelier-skill-steward/plan/invalid/delete-action.v1.json +33 -0
- package/fixtures/atelier-skill-steward/plan/valid/add.v1.json +33 -0
- package/fixtures/atelier-upgrade-transaction/adoption-policy/invalid/example.json +12 -0
- package/fixtures/atelier-upgrade-transaction/adoption-policy/valid/example.json +11 -0
- package/fixtures/atelier-upgrade-transaction/migration/invalid/example.json +20 -0
- package/fixtures/atelier-upgrade-transaction/migration/valid/example.json +19 -0
- package/fixtures/atelier-upgrade-transaction/upgrade-plan/invalid/example.json +58 -0
- package/fixtures/atelier-upgrade-transaction/upgrade-plan/valid/example.json +57 -0
- package/fixtures/atelier-upgrade-transaction/upgrade-receipt/invalid/example.json +15 -0
- package/fixtures/atelier-upgrade-transaction/upgrade-receipt/valid/example.json +14 -0
- package/fixtures/atelier-vault-publication/invalid/publication.json +5 -0
- package/fixtures/atelier-vault-publication/valid/publication.json +11 -0
- package/fixtures/decisions/request/invalid/unknown-authority.v1.json +61 -0
- package/fixtures/decisions/request/valid/triage.v1.json +60 -0
- package/fixtures/decisions/result/invalid/execution-authority.v1.json +50 -0
- package/fixtures/decisions/result/valid/abstained.v1.json +23 -0
- package/fixtures/decisions/result/valid/assessed.v1.json +50 -0
- package/fixtures/obsidian/acceptance/ap05-extra-notes.json +14 -0
- package/fixtures/obsidian/acceptance/receipts/G07.valid.v1.json +63 -0
- package/fixtures/obsidian/acceptance/receipts/G13.valid.v1.json +69 -0
- package/fixtures/obsidian/acceptance/receipts/G14.valid.v1.json +62 -0
- package/fixtures/obsidian/acceptance/receipts/G15.valid.v1.json +56 -0
- package/fixtures/obsidian/acceptance/receipts/G16.valid.v1.json +73 -0
- package/fixtures/obsidian/acceptance/receipts/G17.valid.v1.json +75 -0
- package/fixtures/obsidian/acceptance/receipts/G18.valid.v1.json +64 -0
- package/fixtures/obsidian/acceptance/service-sentinels.json +10 -0
- package/fixtures/obsidian/contracts/acceptance-receipt/invalid/duplicate-evidence-name.v1.json +39 -0
- package/fixtures/obsidian/contracts/acceptance-receipt/invalid/evidence-by-absolute-path.v1.json +34 -0
- package/fixtures/obsidian/contracts/acceptance-receipt/invalid/missing-candidate-tree.v1.json +33 -0
- package/fixtures/obsidian/contracts/acceptance-receipt/invalid/no-evidence.v1.json +28 -0
- package/fixtures/obsidian/contracts/acceptance-receipt/invalid/unknown-outcome.v1.json +34 -0
- package/fixtures/obsidian/contracts/acceptance-receipt/invalid/unknown-top-level-field.v1.json +35 -0
- package/fixtures/obsidian/contracts/acceptance-receipt/valid/node-gate.v1.json +34 -0
- package/fixtures/obsidian/contracts/apply-policy/invalid/automatic-without-edit-class.v1.json +27 -0
- package/fixtures/obsidian/contracts/apply-policy/invalid/conflict-overwrite.v1.json +29 -0
- package/fixtures/obsidian/contracts/apply-policy/invalid/missing-policy-digest.v1.json +28 -0
- package/fixtures/obsidian/contracts/apply-policy/invalid/unbounded-batch.v1.json +29 -0
- package/fixtures/obsidian/contracts/apply-policy/invalid/unimplemented-edit-class.v1.json +30 -0
- package/fixtures/obsidian/contracts/apply-policy/invalid/unknown-mode.v1.json +29 -0
- package/fixtures/obsidian/contracts/apply-policy/invalid/unknown-selector-operator.v1.json +22 -0
- package/fixtures/obsidian/contracts/apply-policy/invalid/unknown-top-level-field.v1.json +30 -0
- package/fixtures/obsidian/contracts/apply-policy/valid/automatic-scoped.v1.json +29 -0
- package/fixtures/obsidian/contracts/apply-policy/valid/manual-default.v1.json +20 -0
- package/fixtures/obsidian/contracts/corpus-profile/invalid/absolute-path-in-ext.v1.json +30 -0
- package/fixtures/obsidian/contracts/corpus-profile/invalid/absolute-repository-root.v1.json +27 -0
- package/fixtures/obsidian/contracts/corpus-profile/invalid/duplicate-repository-id.v1.json +27 -0
- package/fixtures/obsidian/contracts/corpus-profile/invalid/overlapping-managed-roots.v1.json +27 -0
- package/fixtures/obsidian/contracts/corpus-profile/invalid/unknown-enrollment.v1.json +27 -0
- package/fixtures/obsidian/contracts/corpus-profile/invalid/unknown-top-level-field.v1.json +28 -0
- package/fixtures/obsidian/contracts/corpus-profile/valid/three-repositories.v1.json +27 -0
- package/fixtures/obsidian/contracts/edit-operation/invalid/absolute-recovery-ref.v1.json +21 -0
- package/fixtures/obsidian/contracts/edit-operation/invalid/inline-observed-bytes.v1.json +22 -0
- package/fixtures/obsidian/contracts/edit-operation/invalid/missing-base-digest.v1.json +20 -0
- package/fixtures/obsidian/contracts/edit-operation/invalid/short-idempotency-key.v1.json +21 -0
- package/fixtures/obsidian/contracts/edit-operation/invalid/unknown-kind.v1.json +21 -0
- package/fixtures/obsidian/contracts/edit-operation/valid/pending-body-replacement.v1.json +21 -0
- package/fixtures/obsidian/contracts/ext-settings/invalid/absolute-path-prefix.v1.json +28 -0
- package/fixtures/obsidian/contracts/ext-settings/invalid/apply-policy-in-portable-settings.v1.json +30 -0
- package/fixtures/obsidian/contracts/ext-settings/invalid/duplicate-scope-id.v1.json +27 -0
- package/fixtures/obsidian/contracts/ext-settings/invalid/machine-local-vault-path.v1.json +28 -0
- package/fixtures/obsidian/contracts/ext-settings/invalid/service-port-in-portable-settings.v1.json +28 -0
- package/fixtures/obsidian/contracts/ext-settings/invalid/unknown-default-scope.v1.json +27 -0
- package/fixtures/obsidian/contracts/ext-settings/valid/disabled.v1.json +5 -0
- package/fixtures/obsidian/contracts/ext-settings/valid/enabled-with-scopes.v1.json +27 -0
- package/fixtures/obsidian/contracts/generation-manifest/invalid/absolute-note-path.v1.json +114 -0
- package/fixtures/obsidian/contracts/generation-manifest/invalid/complete-with-unwritten-notes.v1.json +114 -0
- package/fixtures/obsidian/contracts/generation-manifest/invalid/derived-link-claimed-declared.v1.json +114 -0
- package/fixtures/obsidian/contracts/generation-manifest/invalid/duplicate-note-identity.v1.json +114 -0
- package/fixtures/obsidian/contracts/generation-manifest/invalid/in-scope-endpoint-missing.v1.json +114 -0
- package/fixtures/obsidian/contracts/generation-manifest/invalid/title-only-note-path.v1.json +114 -0
- package/fixtures/obsidian/contracts/generation-manifest/invalid/unknown-note-field.v1.json +115 -0
- package/fixtures/obsidian/contracts/generation-manifest/invalid/unknown-relation-type.v1.json +114 -0
- package/fixtures/obsidian/contracts/generation-manifest/invalid/withheld-endpoint.v1.json +114 -0
- package/fixtures/obsidian/contracts/generation-manifest/valid/two-notes.v1.json +114 -0
- package/fixtures/obsidian/contracts/oracles/scope-cases.json +412 -0
- package/fixtures/obsidian/contracts/proposal-receipt/invalid/accepted-without-proposal-id.v1.json +12 -0
- package/fixtures/obsidian/contracts/proposal-receipt/invalid/missing-adapter-operation-id.v1.json +11 -0
- package/fixtures/obsidian/contracts/proposal-receipt/invalid/unknown-backpressure-outcome.v1.json +12 -0
- package/fixtures/obsidian/contracts/proposal-receipt/invalid/unknown-top-level-field.v1.json +13 -0
- package/fixtures/obsidian/contracts/proposal-receipt/valid/accepted-new.v1.json +12 -0
- package/fixtures/obsidian/contracts/proposal-receipt/valid/deferred.v1.json +12 -0
- package/fixtures/obsidian/contracts/publication-journal/invalid/absolute-recovery-ref.v1.json +47 -0
- package/fixtures/obsidian/contracts/publication-journal/invalid/duplicate-sequence.v1.json +47 -0
- package/fixtures/obsidian/contracts/publication-journal/invalid/empty-protocol-id.v1.json +47 -0
- package/fixtures/obsidian/contracts/publication-journal/invalid/missing-protocol-id.v1.json +46 -0
- package/fixtures/obsidian/contracts/publication-journal/invalid/unknown-entry-field.v1.json +48 -0
- package/fixtures/obsidian/contracts/publication-journal/invalid/unknown-state.v1.json +47 -0
- package/fixtures/obsidian/contracts/publication-journal/valid/committed.v1.json +47 -0
- package/fixtures/obsidian/contracts/publication-journal/valid/updating-after-restart.v1.json +22 -0
- package/fixtures/obsidian/contracts/scope/invalid/absolute-path-prefix.v1.json +15 -0
- package/fixtures/obsidian/contracts/scope/invalid/duplicate-ids.v1.json +18 -0
- package/fixtures/obsidian/contracts/scope/invalid/expansion-without-node-budget.v1.json +40 -0
- package/fixtures/obsidian/contracts/scope/invalid/full-mode-with-subset.v1.json +8 -0
- package/fixtures/obsidian/contracts/scope/invalid/unknown-mode.v1.json +41 -0
- package/fixtures/obsidian/contracts/scope/invalid/unknown-selector-key.v1.json +15 -0
- package/fixtures/obsidian/contracts/scope/invalid/unknown-selector-operator.v1.json +14 -0
- package/fixtures/obsidian/contracts/scope/invalid/unknown-top-level-field.v1.json +42 -0
- package/fixtures/obsidian/contracts/scope/valid/explicit-empty.v1.json +8 -0
- package/fixtures/obsidian/contracts/scope/valid/focus.v1.json +11 -0
- package/fixtures/obsidian/contracts/scope/valid/full.v1.json +8 -0
- package/fixtures/obsidian/contracts/scope/valid/scoped-set-expression.v1.json +41 -0
- package/fixtures/obsidian/contracts/service-state/invalid/hostname-instead-of-literal-loopback.v1.json +23 -0
- package/fixtures/obsidian/contracts/service-state/invalid/missing-consent.v1.json +18 -0
- package/fixtures/obsidian/contracts/service-state/invalid/privileged-port.v1.json +23 -0
- package/fixtures/obsidian/contracts/service-state/invalid/unknown-top-level-field.v1.json +24 -0
- package/fixtures/obsidian/contracts/service-state/invalid/wildcard-bind.v1.json +23 -0
- package/fixtures/obsidian/contracts/service-state/valid/healthy.v1.json +23 -0
- package/fixtures/obsidian/contracts/source-snapshot/invalid/absolute-file-path.v1.json +48 -0
- package/fixtures/obsidian/contracts/source-snapshot/invalid/duplicate-repository-id.v1.json +48 -0
- package/fixtures/obsidian/contracts/source-snapshot/invalid/mixed-read.v1.json +48 -0
- package/fixtures/obsidian/contracts/source-snapshot/invalid/parent-traversal-path.v1.json +48 -0
- package/fixtures/obsidian/contracts/source-snapshot/invalid/unknown-file-field.v1.json +49 -0
- package/fixtures/obsidian/contracts/source-snapshot/valid/two-repositories.v1.json +48 -0
- package/fixtures/obsidian/edits/workspace.json +65 -0
- package/fixtures/obsidian/materialization/expected-full.json +99 -0
- package/fixtures/obsidian/materialization/expected-scoped.json +39 -0
- package/fixtures/obsidian/materialization/workspace.json +54 -0
- package/fixtures/obsidian/proposals/expected-shapes.json +11 -0
- package/fixtures/projects/sample-workspace/content/source.html.kg.json +4 -1
- package/fixtures/projects/source-formats-workspace/content/data.json.kg.json +4 -1
- package/fixtures/projects/source-formats-workspace/content/logo.png.kg.json +4 -1
- package/fixtures/projects/source-formats-workspace/content/metrics.csv.kg.json +4 -1
- package/fixtures/projects/source-formats-workspace/content/pipeline.yaml.kg.json +4 -1
- package/fixtures/ui/presentation/pane.v1.json +7 -0
- package/fixtures/ui/presentation/reference.v1.json +293 -0
- package/package.json +86 -10
- package/skills/claude/atelier-guided-coauthor/SKILL.md +49 -0
- package/skills/claude/atelier-guided-upgrade/SKILL.md +97 -0
- package/skills/claude/atelier-local-service/SKILL.md +47 -0
- package/skills/claude/atelier-open/SKILL.md +11 -5
- package/skills/claude/atelier-public-boundary/SKILL.md +31 -0
- package/skills/claude/atelier-skill-steward/SKILL.md +62 -0
- package/skills/claude/mnstry-readiness/SKILL.md +5 -0
- package/skills/codex/atelier-guided-coauthor/SKILL.md +49 -0
- package/skills/codex/atelier-guided-upgrade/SKILL.md +97 -0
- package/skills/codex/atelier-local-service/SKILL.md +47 -0
- package/skills/codex/atelier-open/SKILL.md +11 -5
- package/skills/codex/atelier-public-boundary/SKILL.md +31 -0
- package/skills/codex/atelier-skill-steward/SKILL.md +62 -0
- package/skills/codex/mnstry-readiness/SKILL.md +5 -0
- package/src/access/preview-enforcer.mjs +84 -0
- package/src/boundary/content-rules.mjs +283 -20
- package/src/boundary/policy.mjs +213 -91
- package/src/cli/execute-command.mjs +36 -0
- package/src/cli/project-options.mjs +58 -0
- package/src/cli/run.mjs +78 -10
- package/src/coauthor/session.mjs +161 -0
- package/src/coauthor/store.mjs +173 -0
- package/src/collaboration/event-ledger.mjs +348 -0
- package/src/collaboration/index.mjs +17 -0
- package/src/collaboration/inspection-bundle.mjs +223 -0
- package/src/collaboration/proposals.mjs +265 -65
- package/src/collaboration/review-contracts.mjs +25 -0
- package/src/collaboration/review-store.mjs +305 -0
- package/src/commands/attestation.mjs +20 -6
- package/src/commands/coauthor.mjs +26 -0
- package/src/commands/config.mjs +6 -1
- package/src/commands/disclosure.mjs +133 -0
- package/src/commands/distribution.mjs +2 -1
- package/src/commands/extension-pack.mjs +17 -9
- package/src/commands/init.mjs +46 -6
- package/src/commands/obsidian.mjs +371 -0
- package/src/commands/review.mjs +147 -0
- package/src/commands/server.mjs +1 -4
- package/src/commands/setup.mjs +51 -14
- package/src/commands/skills.mjs +199 -0
- package/src/commands/sync.mjs +107 -0
- package/src/composition/registry.mjs +27 -0
- package/src/composition/wire.mjs +122 -0
- package/src/contracts/corpus.mjs +35 -0
- package/src/decisions/contracts.d.mts +96 -0
- package/src/decisions/contracts.mjs +321 -0
- package/src/disclosure/content-scan.mjs +206 -0
- package/src/egress/check.mjs +7 -38
- package/src/egress/forbidden-egress.mjs +32 -18
- package/src/export/atelier-export-contract.mjs +16 -1
- package/src/extension-packs/lifecycle.mjs +154 -0
- package/src/graph/graph.mjs +176 -316
- package/src/graph/knowledge-graph.mjs +643 -43
- package/src/guides/contracts.mjs +54 -0
- package/src/harness/context-client.mjs +9 -1
- package/src/index.mjs +41 -0
- package/src/intake/store.mjs +119 -0
- package/src/preview/channel.mjs +89 -0
- package/src/project/config.mjs +112 -52
- package/src/project/durable-state.mjs +161 -0
- package/src/project/file-class.mjs +180 -0
- package/src/project/package-root.mjs +10 -0
- package/src/project/path-match.mjs +38 -15
- package/src/project/private-state.mjs +120 -0
- package/src/projection/obsidian/contracts.mjs +571 -0
- package/src/projection/obsidian/edits/align.mjs +169 -0
- package/src/projection/obsidian/edits/apply.mjs +889 -0
- package/src/projection/obsidian/edits/arbitrate.mjs +414 -0
- package/src/projection/obsidian/edits/contribution.mjs +108 -0
- package/src/projection/obsidian/edits/index.mjs +19 -0
- package/src/projection/obsidian/edits/object-identity.mjs +61 -0
- package/src/projection/obsidian/edits/object-store.mjs +517 -0
- package/src/projection/obsidian/edits/observe.mjs +123 -0
- package/src/projection/obsidian/edits/policy.mjs +123 -0
- package/src/projection/obsidian/edits/regions.mjs +648 -0
- package/src/projection/obsidian/materialize/byte-lens.mjs +98 -0
- package/src/projection/obsidian/materialize/index.mjs +7 -0
- package/src/projection/obsidian/materialize/path-registry.mjs +105 -0
- package/src/projection/obsidian/materialize/prepare-view.mjs +746 -0
- package/src/projection/obsidian/materialize/settings.mjs +57 -0
- package/src/projection/obsidian/materialize/stage.mjs +27 -0
- package/src/projection/obsidian/proposals/adapter.mjs +572 -0
- package/src/projection/obsidian/proposals/backpressure.mjs +113 -0
- package/src/projection/obsidian/proposals/contribution.mjs +55 -0
- package/src/projection/obsidian/proposals/index.mjs +23 -0
- package/src/projection/obsidian/proposals/observation.mjs +216 -0
- package/src/projection/obsidian/proposals/queue.mjs +277 -0
- package/src/projection/obsidian/proposals/router.mjs +168 -0
- package/src/projection/obsidian/publication/bridge-script.mjs +266 -0
- package/src/projection/obsidian/publication/exchange.mjs +117 -0
- package/src/projection/obsidian/publication/index.mjs +5 -0
- package/src/projection/obsidian/publication/publisher.mjs +588 -0
- package/src/projection/obsidian/publication/test-seam.mjs +16 -0
- package/src/projection/obsidian/publication/transport.mjs +160 -0
- package/src/projection/obsidian/recovery/index.mjs +6 -0
- package/src/projection/obsidian/recovery/journal.mjs +134 -0
- package/src/projection/obsidian/recovery/late-writer.mjs +46 -0
- package/src/projection/obsidian/recovery/restart.mjs +316 -0
- package/src/projection/obsidian/recovery/store.mjs +234 -0
- package/src/projection/obsidian/selection-ui/conflict-view.mjs +91 -0
- package/src/projection/obsidian/selection-ui/contribution.mjs +141 -0
- package/src/projection/obsidian/selection-ui/focus.mjs +82 -0
- package/src/projection/obsidian/selection-ui/index.mjs +12 -0
- package/src/projection/obsidian/selection-ui/policy-setup.mjs +107 -0
- package/src/projection/obsidian/selection-ui/receipt.mjs +173 -0
- package/src/projection/obsidian/selection-ui/selection-state.mjs +122 -0
- package/src/projection/obsidian/selection-ui/selection.mjs +109 -0
- package/src/projection/project.mjs +28 -19
- package/src/readiness-protocols/evidence.mjs +282 -0
- package/src/readiness-protocols/runtime.mjs +4 -3
- package/src/readiness-protocols/source-read.mjs +39 -0
- package/src/runtime/git-adapter.mjs +189 -0
- package/src/runtime/local-state.mjs +439 -0
- package/src/runtime/obsidian/app-capability.mjs +129 -0
- package/src/runtime/obsidian/app-production-seams.mjs +105 -0
- package/src/runtime/obsidian/contributions/proposal-adapter.mjs +4 -0
- package/src/runtime/obsidian/contributions/selection-ui.mjs +4 -0
- package/src/runtime/obsidian/contributions/source-apply.mjs +4 -0
- package/src/runtime/obsidian/contributions.mjs +27 -0
- package/src/runtime/obsidian/documents.mjs +37 -0
- package/src/runtime/obsidian/enablement.mjs +53 -0
- package/src/runtime/obsidian/engine.mjs +532 -0
- package/src/runtime/obsidian/errors.mjs +14 -0
- package/src/runtime/obsidian/extension-points.mjs +103 -0
- package/src/runtime/obsidian/index.mjs +34 -0
- package/src/runtime/obsidian/lifecycle.mjs +258 -0
- package/src/runtime/obsidian/machine-settings.mjs +260 -0
- package/src/runtime/obsidian/observation.mjs +158 -0
- package/src/runtime/obsidian/opening.mjs +263 -0
- package/src/runtime/obsidian/pending-edits.mjs +141 -0
- package/src/runtime/obsidian/pipeline.mjs +122 -0
- package/src/runtime/obsidian/private-lock.mjs +156 -0
- package/src/runtime/obsidian/process-identity.mjs +58 -0
- package/src/runtime/obsidian/service-client.mjs +66 -0
- package/src/runtime/obsidian/service-entry-path.mjs +9 -0
- package/src/runtime/obsidian/service-main.mjs +91 -0
- package/src/runtime/obsidian/service-record.mjs +169 -0
- package/src/runtime/obsidian/service-server.mjs +121 -0
- package/src/runtime/obsidian/service.mjs +216 -0
- package/src/runtime/obsidian/startup-adapters.mjs +87 -0
- package/src/runtime/obsidian/state-store.mjs +180 -0
- package/src/runtime/obsidian/sync-notice.mjs +33 -0
- package/src/runtime/obsidian/tick-loop.mjs +84 -0
- package/src/runtime/obsidian/watchers.mjs +36 -0
- package/src/runtime/repository-observation.mjs +491 -0
- package/src/runtime/supervisor.mjs +803 -0
- package/src/server/local-sidecar.mjs +125 -59
- package/src/server/security.mjs +89 -4
- package/src/server/server.mjs +4 -2
- package/src/skills/steward.mjs +780 -0
- package/src/support/feedback-report.mjs +4 -3
- package/src/ui/presentation/browser.mjs +278 -0
- package/src/ui/presentation/contract.mjs +116 -0
- package/src/ui/presentation/index.mjs +7 -0
- package/src/ui/presentation/native.mjs +153 -0
- package/src/ui/presentation/proof.mjs +57 -0
- package/src/ui/presentation/schema-check.mjs +30 -0
- package/src/ui/presentation/schema.generated.mjs +1371 -0
- package/src/ui/presentation/state.mjs +43 -0
- package/src/ui/presentation/styles.mjs +67 -0
- package/src/ui/presentation/tokens.mjs +74 -0
- package/src/ui/presentation/web.mjs +85 -0
- package/src/ui/review-page.mjs +32 -0
- package/src/upgrade/explanation.mjs +33 -0
- package/src/upgrade/provenance.mjs +338 -0
- package/src/upgrade/transaction-files.mjs +103 -0
- package/src/upgrade/transaction.mjs +475 -0
- package/src/upgrade/upgrade.mjs +65 -29
- package/src/vault/hosts.mjs +21 -0
- package/src/vault/identity.mjs +19 -0
- package/src/vault/index.mjs +7 -0
- package/src/vault/interface.mjs +11 -0
- package/src/vault/metadata.mjs +31 -0
- package/src/vault/privacy.mjs +148 -0
- package/src/vault/probe.mjs +89 -0
- package/src/vault/service.mjs +131 -0
- package/src/vault/source.mjs +45 -0
- package/src/vault/storage.mjs +23 -0
- package/templates/distribution-workspace/.claude/launch.json +6 -2
- package/templates/distribution-workspace/gitignore +1 -0
- package/templates/distribution-workspace/project/README.md +2 -2
- package/templates/external-project-workspace/README.md +45 -0
- package/templates/external-project-workspace/answers.example.json +4 -0
- package/templates/external-project-workspace/atelier.project.json +40 -0
- package/templates/external-project-workspace/boundary-policy.v1.json +60 -0
- package/templates/external-project-workspace/gitignore +8 -0
- package/templates/external-project-workspace/pack-lifecycle.json +14 -0
- package/templates/external-project-workspace/packs/protocols/contract-gate.v1.json +109 -0
- package/templates/external-project-workspace/packs/sample-pack.v1.json +48 -0
- package/templates/external-project-workspace/repo-access.v1.json +9 -0
- package/templates/external-project-workspace/source/README.md +11 -0
- package/templates/launch.json +6 -2
- package/templates/private-domain-workspace/.claude/launch.json +6 -2
- package/templates/private-domain-workspace/domain/README.md +2 -2
- package/templates/private-domain-workspace/gitignore +1 -0
- package/templates/shared-project-workspace/.claude/launch.json +6 -2
- package/templates/shared-project-workspace/gitignore +1 -0
- package/templates/shared-project-workspace/project/README.md +2 -2
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "atelier.presentation/v1",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"id": "reference-desk",
|
|
5
|
+
"title": "Reference desk",
|
|
6
|
+
"lang": "en",
|
|
7
|
+
"direction": "ltr",
|
|
8
|
+
"theme": "light",
|
|
9
|
+
"density": "comfortable",
|
|
10
|
+
"navigation": [
|
|
11
|
+
{
|
|
12
|
+
"id": "nav-work",
|
|
13
|
+
"label": "Working area",
|
|
14
|
+
"target": "work"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "nav-context",
|
|
18
|
+
"label": "Context",
|
|
19
|
+
"target": "context"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"panes": [
|
|
23
|
+
{
|
|
24
|
+
"id": "work",
|
|
25
|
+
"label": "Working area",
|
|
26
|
+
"role": "primary",
|
|
27
|
+
"width": {
|
|
28
|
+
"min": 30,
|
|
29
|
+
"max": 75,
|
|
30
|
+
"value": 60
|
|
31
|
+
},
|
|
32
|
+
"blocks": [
|
|
33
|
+
"intro",
|
|
34
|
+
"draft-title",
|
|
35
|
+
"draft-body",
|
|
36
|
+
"comparison",
|
|
37
|
+
"preview",
|
|
38
|
+
"paper-image"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "context",
|
|
43
|
+
"label": "Context",
|
|
44
|
+
"role": "context",
|
|
45
|
+
"width": {
|
|
46
|
+
"min": 25,
|
|
47
|
+
"max": 60,
|
|
48
|
+
"value": 35
|
|
49
|
+
},
|
|
50
|
+
"blocks": [
|
|
51
|
+
"items",
|
|
52
|
+
"steps",
|
|
53
|
+
"graph",
|
|
54
|
+
"status",
|
|
55
|
+
"refusal",
|
|
56
|
+
"decision",
|
|
57
|
+
"receipt",
|
|
58
|
+
"offer",
|
|
59
|
+
"review",
|
|
60
|
+
"publication"
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"nodes": [
|
|
65
|
+
{
|
|
66
|
+
"id": "paper-image",
|
|
67
|
+
"type": "media",
|
|
68
|
+
"label": "Paper illustration",
|
|
69
|
+
"src": "/paper.svg",
|
|
70
|
+
"alt": "A grey rectangular sheet on a plain background",
|
|
71
|
+
"caption": "Invented reference media; the host supplies the local asset."
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"id": "intro",
|
|
75
|
+
"type": "text",
|
|
76
|
+
"label": "A small reference workspace",
|
|
77
|
+
"text": "Invented notes and objects exercise the presentation contract. Content, workflow and permissions belong to the host."
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"id": "draft-title",
|
|
81
|
+
"type": "field",
|
|
82
|
+
"label": "Note title",
|
|
83
|
+
"value": "A study of paper shapes",
|
|
84
|
+
"input": "text",
|
|
85
|
+
"required": true,
|
|
86
|
+
"disabled": false
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "draft-body",
|
|
90
|
+
"type": "editor",
|
|
91
|
+
"label": "Draft text",
|
|
92
|
+
"value": "Arrange three paper shapes on the table.\nDescribe how their edges meet.",
|
|
93
|
+
"disabled": false
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"id": "comparison",
|
|
97
|
+
"type": "diff",
|
|
98
|
+
"label": "Change preview",
|
|
99
|
+
"before": "Two paper shapes.",
|
|
100
|
+
"after": "Three paper shapes.",
|
|
101
|
+
"beforeLabel": "Earlier text",
|
|
102
|
+
"afterLabel": "Proposed text"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"id": "preview",
|
|
106
|
+
"type": "preview",
|
|
107
|
+
"label": "Read-only preview",
|
|
108
|
+
"text": "A study of paper shapes\n\nThree simple shapes share a table."
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"id": "items",
|
|
112
|
+
"type": "collection",
|
|
113
|
+
"label": "Objects",
|
|
114
|
+
"items": [
|
|
115
|
+
{
|
|
116
|
+
"id": "circle",
|
|
117
|
+
"label": "Circle",
|
|
118
|
+
"detail": "Round edge",
|
|
119
|
+
"selected": true
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"id": "square",
|
|
123
|
+
"label": "Square",
|
|
124
|
+
"detail": "Four equal edges",
|
|
125
|
+
"selected": false
|
|
126
|
+
}
|
|
127
|
+
]
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"id": "steps",
|
|
131
|
+
"type": "sequence",
|
|
132
|
+
"reorderable": true,
|
|
133
|
+
"label": "Reading order",
|
|
134
|
+
"items": [
|
|
135
|
+
{
|
|
136
|
+
"id": "observe",
|
|
137
|
+
"label": "Observe",
|
|
138
|
+
"selected": false
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"id": "describe",
|
|
142
|
+
"label": "Describe",
|
|
143
|
+
"selected": false
|
|
144
|
+
}
|
|
145
|
+
]
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"id": "graph",
|
|
149
|
+
"type": "graph",
|
|
150
|
+
"label": "Connections",
|
|
151
|
+
"items": [
|
|
152
|
+
{
|
|
153
|
+
"id": "paper",
|
|
154
|
+
"label": "Paper"
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"id": "shape",
|
|
158
|
+
"label": "Shape"
|
|
159
|
+
}
|
|
160
|
+
],
|
|
161
|
+
"edges": [
|
|
162
|
+
{
|
|
163
|
+
"from": "paper",
|
|
164
|
+
"to": "shape",
|
|
165
|
+
"label": "folded into"
|
|
166
|
+
}
|
|
167
|
+
]
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"id": "status",
|
|
171
|
+
"type": "status",
|
|
172
|
+
"label": "Status",
|
|
173
|
+
"text": "Host-supplied status information.",
|
|
174
|
+
"tone": "neutral",
|
|
175
|
+
"details": [
|
|
176
|
+
{
|
|
177
|
+
"label": "Source",
|
|
178
|
+
"value": "Invented reference host"
|
|
179
|
+
}
|
|
180
|
+
],
|
|
181
|
+
"actions": []
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"id": "refusal",
|
|
185
|
+
"type": "refusal",
|
|
186
|
+
"label": "Refusal",
|
|
187
|
+
"text": "Host-supplied refusal information.",
|
|
188
|
+
"tone": "warning",
|
|
189
|
+
"details": [
|
|
190
|
+
{
|
|
191
|
+
"label": "Source",
|
|
192
|
+
"value": "Invented reference host"
|
|
193
|
+
}
|
|
194
|
+
],
|
|
195
|
+
"actions": [
|
|
196
|
+
"disabled-action"
|
|
197
|
+
]
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"id": "decision",
|
|
201
|
+
"type": "decision",
|
|
202
|
+
"label": "Decision",
|
|
203
|
+
"text": "Host-supplied decision information.",
|
|
204
|
+
"tone": "neutral",
|
|
205
|
+
"details": [
|
|
206
|
+
{
|
|
207
|
+
"label": "Source",
|
|
208
|
+
"value": "Invented reference host"
|
|
209
|
+
}
|
|
210
|
+
],
|
|
211
|
+
"actions": []
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"id": "receipt",
|
|
215
|
+
"type": "receipt",
|
|
216
|
+
"label": "Receipt",
|
|
217
|
+
"text": "Host-supplied receipt information.",
|
|
218
|
+
"tone": "neutral",
|
|
219
|
+
"details": [
|
|
220
|
+
{
|
|
221
|
+
"label": "Source",
|
|
222
|
+
"value": "Invented reference host"
|
|
223
|
+
}
|
|
224
|
+
],
|
|
225
|
+
"actions": []
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"id": "offer",
|
|
229
|
+
"type": "offer",
|
|
230
|
+
"label": "Offer",
|
|
231
|
+
"text": "Host-supplied offer information.",
|
|
232
|
+
"tone": "neutral",
|
|
233
|
+
"details": [
|
|
234
|
+
{
|
|
235
|
+
"label": "Source",
|
|
236
|
+
"value": "Invented reference host"
|
|
237
|
+
}
|
|
238
|
+
],
|
|
239
|
+
"actions": []
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"id": "review",
|
|
243
|
+
"type": "review",
|
|
244
|
+
"label": "Review",
|
|
245
|
+
"text": "Host-supplied review information.",
|
|
246
|
+
"tone": "neutral",
|
|
247
|
+
"details": [
|
|
248
|
+
{
|
|
249
|
+
"label": "Source",
|
|
250
|
+
"value": "Invented reference host"
|
|
251
|
+
}
|
|
252
|
+
],
|
|
253
|
+
"actions": []
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"id": "publication",
|
|
257
|
+
"type": "publication",
|
|
258
|
+
"label": "Publication",
|
|
259
|
+
"text": "Host-supplied publication information.",
|
|
260
|
+
"tone": "neutral",
|
|
261
|
+
"details": [
|
|
262
|
+
{
|
|
263
|
+
"label": "Source",
|
|
264
|
+
"value": "Invented reference host"
|
|
265
|
+
}
|
|
266
|
+
],
|
|
267
|
+
"actions": [
|
|
268
|
+
"confirm-action"
|
|
269
|
+
]
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"id": "confirm-action",
|
|
273
|
+
"type": "action",
|
|
274
|
+
"label": "Request publication",
|
|
275
|
+
"actionRef": "publish-request",
|
|
276
|
+
"disabled": false,
|
|
277
|
+
"confirmation": {
|
|
278
|
+
"title": "Request publication?",
|
|
279
|
+
"description": "This forwards a request to the host. It does not publish content or grant permission.",
|
|
280
|
+
"confirmLabel": "Send request",
|
|
281
|
+
"cancelLabel": "Keep editing"
|
|
282
|
+
}
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"id": "disabled-action",
|
|
286
|
+
"type": "action",
|
|
287
|
+
"label": "Unavailable action",
|
|
288
|
+
"actionRef": "unavailable",
|
|
289
|
+
"disabled": true,
|
|
290
|
+
"reason": "The reference host has not supplied this capability."
|
|
291
|
+
}
|
|
292
|
+
]
|
|
293
|
+
}
|
package/package.json
CHANGED
|
@@ -1,14 +1,45 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mnstry/atelier",
|
|
3
|
-
"version": "0.2.0-alpha.
|
|
3
|
+
"version": "0.2.0-alpha.10",
|
|
4
4
|
"private": false,
|
|
5
|
-
"description": "Local
|
|
5
|
+
"description": "Local toolkit that turns a Git repository into an ontology-governed knowledge graph, enforcement layer, and runtime for people, agents, and tools. No telemetry or required hosted account; optional host-bound vault adapters.",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"knowledge-graph",
|
|
8
|
+
"ontology",
|
|
9
|
+
"front-matter",
|
|
10
|
+
"local-first",
|
|
11
|
+
"json-schema",
|
|
12
|
+
"validation",
|
|
13
|
+
"provenance",
|
|
14
|
+
"governance",
|
|
15
|
+
"markdown",
|
|
16
|
+
"cli",
|
|
17
|
+
"agent-context",
|
|
18
|
+
"offline"
|
|
19
|
+
],
|
|
6
20
|
"type": "module",
|
|
7
21
|
"bin": {
|
|
8
22
|
"atelier": "bin/atelier.mjs",
|
|
9
23
|
"mnstry-atelier": "bin/mnstry-atelier.mjs"
|
|
10
24
|
},
|
|
11
25
|
"exports": {
|
|
26
|
+
"./decisions": "./src/decisions/contracts.mjs",
|
|
27
|
+
"./contracts/atelier-decision-request.v1.schema.json": "./contracts/atelier-decision-request.v1.schema.json",
|
|
28
|
+
"./contracts/atelier-decision-result.v1.schema.json": "./contracts/atelier-decision-result.v1.schema.json",
|
|
29
|
+
"./presentation": "./src/ui/presentation/index.mjs",
|
|
30
|
+
"./presentation/browser": "./src/ui/presentation/browser.mjs",
|
|
31
|
+
"./presentation/native": "./src/ui/presentation/native.mjs",
|
|
32
|
+
"./contracts/atelier-presentation.v1.schema.json": "./contracts/atelier-presentation.v1.schema.json",
|
|
33
|
+
"./contracts/atelier-pane-presentation.v1.schema.json": "./contracts/atelier-pane-presentation.v1.schema.json",
|
|
34
|
+
"./coauthor": "./src/coauthor/session.mjs",
|
|
35
|
+
"./skills": "./src/skills/steward.mjs",
|
|
36
|
+
"./intake": "./src/intake/store.mjs",
|
|
37
|
+
"./contracts/atelier-intake.v1.schema.json": "./contracts/atelier-intake.v1.schema.json",
|
|
38
|
+
"./guides": "./src/guides/contracts.mjs",
|
|
39
|
+
"./contracts/atelier-guide.v1.schema.json": "./contracts/atelier-guide.v1.schema.json",
|
|
40
|
+
"./contracts/atelier-skill-steward.v1.schema.json": "./contracts/atelier-skill-steward.v1.schema.json",
|
|
41
|
+
"./coauthor/store": "./src/coauthor/store.mjs",
|
|
42
|
+
"./contracts/atelier-coauthor.v1.schema.json": "./contracts/atelier-coauthor.v1.schema.json",
|
|
12
43
|
".": "./src/index.mjs",
|
|
13
44
|
"./cli": "./src/cli/run.mjs",
|
|
14
45
|
"./project": "./src/project/config.mjs",
|
|
@@ -18,54 +49,99 @@
|
|
|
18
49
|
"./readiness-protocols": "./src/readiness-protocols/bundled-pack.mjs",
|
|
19
50
|
"./server": "./src/server/local-sidecar.mjs",
|
|
20
51
|
"./harness": "./src/harness/context.mjs",
|
|
52
|
+
"./collaboration": "./src/collaboration/index.mjs",
|
|
21
53
|
"./support": "./src/support/support-bundle.mjs",
|
|
22
54
|
"./egress": "./src/egress/forbidden-egress.mjs",
|
|
55
|
+
"./disclosure": "./src/disclosure/content-scan.mjs",
|
|
23
56
|
"./boundary": "./src/boundary/policy.mjs",
|
|
24
57
|
"./upgrade": "./src/upgrade/upgrade.mjs",
|
|
25
58
|
"./attestation": "./src/attestation/sign.mjs",
|
|
26
59
|
"./extension-packs": "./src/extension-packs/loader.mjs",
|
|
27
60
|
"./analysis/adapter": "./src/analysis/adapter.mjs",
|
|
61
|
+
"./runtime": "./src/runtime/supervisor.mjs",
|
|
62
|
+
"./runtime/git": "./src/runtime/git-adapter.mjs",
|
|
63
|
+
"./runtime/observation": "./src/runtime/repository-observation.mjs",
|
|
28
64
|
"./export-contract": "./src/export/atelier-export-contract.mjs",
|
|
29
65
|
"./dry-run": "./src/validate-atelier-export-dry-run.mjs",
|
|
30
66
|
"./contracts/atelier-export.v1.schema.json": "./contracts/atelier-export.v1.schema.json",
|
|
31
|
-
"./fixtures/atelier-export/sample-studio-offer.v1.json": "./fixtures/atelier-export/sample-studio-offer.v1.json"
|
|
67
|
+
"./fixtures/atelier-export/sample-studio-offer.v1.json": "./fixtures/atelier-export/sample-studio-offer.v1.json",
|
|
68
|
+
"./vault": "./src/vault/index.mjs",
|
|
69
|
+
"./contracts/atelier-vault-publication.v1.schema.json": "./contracts/atelier-vault-publication.v1.schema.json",
|
|
70
|
+
"./vault/source": "./src/vault/source.mjs",
|
|
71
|
+
"./contracts/atelier-adoption-policy.v1.schema.json": "./contracts/atelier-adoption-policy.v1.schema.json",
|
|
72
|
+
"./contracts/atelier-migration.v2.schema.json": "./contracts/atelier-migration.v2.schema.json",
|
|
73
|
+
"./contracts/atelier-upgrade-plan.v2.schema.json": "./contracts/atelier-upgrade-plan.v2.schema.json",
|
|
74
|
+
"./contracts/atelier-upgrade-receipt.v1.schema.json": "./contracts/atelier-upgrade-receipt.v1.schema.json",
|
|
75
|
+
"./local-state": "./src/project/durable-state.mjs",
|
|
76
|
+
"./obsidian": "./src/runtime/obsidian/index.mjs",
|
|
77
|
+
"./obsidian/contracts": "./src/projection/obsidian/contracts.mjs",
|
|
78
|
+
"./obsidian/materialize": "./src/projection/obsidian/materialize/index.mjs",
|
|
79
|
+
"./obsidian/publication": "./src/projection/obsidian/publication/index.mjs",
|
|
80
|
+
"./obsidian/recovery": "./src/projection/obsidian/recovery/index.mjs",
|
|
81
|
+
"./obsidian/edits": "./src/projection/obsidian/edits/index.mjs",
|
|
82
|
+
"./obsidian/proposals": "./src/projection/obsidian/proposals/index.mjs",
|
|
83
|
+
"./obsidian/selection": "./src/projection/obsidian/selection-ui/index.mjs",
|
|
84
|
+
"./contracts/atelier-obsidian-acceptance-receipt.v1.schema.json": "./contracts/atelier-obsidian-acceptance-receipt.v1.schema.json",
|
|
85
|
+
"./contracts/atelier-obsidian-apply-policy.v1.schema.json": "./contracts/atelier-obsidian-apply-policy.v1.schema.json",
|
|
86
|
+
"./contracts/atelier-obsidian-corpus-profile.v1.schema.json": "./contracts/atelier-obsidian-corpus-profile.v1.schema.json",
|
|
87
|
+
"./contracts/atelier-obsidian-edit-operation.v1.schema.json": "./contracts/atelier-obsidian-edit-operation.v1.schema.json",
|
|
88
|
+
"./contracts/atelier-obsidian-ext-settings.v1.schema.json": "./contracts/atelier-obsidian-ext-settings.v1.schema.json",
|
|
89
|
+
"./contracts/atelier-obsidian-generation-manifest.v1.schema.json": "./contracts/atelier-obsidian-generation-manifest.v1.schema.json",
|
|
90
|
+
"./contracts/atelier-obsidian-proposal-receipt.v1.schema.json": "./contracts/atelier-obsidian-proposal-receipt.v1.schema.json",
|
|
91
|
+
"./contracts/atelier-obsidian-publication-journal.v1.schema.json": "./contracts/atelier-obsidian-publication-journal.v1.schema.json",
|
|
92
|
+
"./contracts/atelier-obsidian-scope.v1.schema.json": "./contracts/atelier-obsidian-scope.v1.schema.json",
|
|
93
|
+
"./contracts/atelier-obsidian-service-state.v1.schema.json": "./contracts/atelier-obsidian-service-state.v1.schema.json",
|
|
94
|
+
"./contracts/atelier-obsidian-source-snapshot.v1.schema.json": "./contracts/atelier-obsidian-source-snapshot.v1.schema.json"
|
|
32
95
|
},
|
|
33
96
|
"scripts": {
|
|
34
97
|
"contract": "node src/check-atelier-export-contract.mjs",
|
|
35
98
|
"dry-run": "node src/validate-atelier-export-dry-run.mjs fixtures/atelier-export/sample-studio-offer.v1.json",
|
|
36
99
|
"test": "node --test test/*.test.mjs",
|
|
37
|
-
"syntax:check": "
|
|
100
|
+
"syntax:check": "node scripts/check-syntax.mjs",
|
|
38
101
|
"graph:test": "node --test test/graph.test.mjs test/graph-knowledge-graph.test.mjs test/graph-determinism.test.mjs test/graph-source-formats.test.mjs",
|
|
39
102
|
"project:test": "node --test test/project.test.mjs test/project-config.test.mjs test/projection-policy.test.mjs test/projection-alignment.test.mjs",
|
|
40
103
|
"server:security:test": "node --test test/server.test.mjs test/server-security.test.mjs test/server-proposals.test.mjs",
|
|
41
104
|
"browser:smoke": "node --test test/server.test.mjs",
|
|
105
|
+
"presentation:proof": "node scripts/prove-presentation-browser.mjs",
|
|
42
106
|
"support-bundle:test": "node --test test/support-bundle.test.mjs test/support-egress-analysis.test.mjs",
|
|
43
107
|
"egress:check": "node bin/atelier.mjs egress check",
|
|
44
108
|
"readiness:test": "node --test test/readiness.test.mjs test/readiness-summary.test.mjs test/readiness-protocol-contract.test.mjs test/readiness-protocols.test.mjs test/readiness-protocol-runtime.test.mjs",
|
|
45
109
|
"harness:test": "node --test test/harness.test.mjs test/harness-context.test.mjs",
|
|
46
|
-
"
|
|
110
|
+
"collaboration:test": "node --test test/collaboration-ledger.test.mjs test/server-proposals.test.mjs",
|
|
111
|
+
"sync:test": "node --test test/runtime-git-adapter.test.mjs test/runtime-observation.test.mjs test/runtime-supervisor.test.mjs",
|
|
112
|
+
"boundary:test": "node --test test/boundary-policy-contract.test.mjs test/boundary-content-rules.test.mjs test/boundary-guard.test.mjs",
|
|
113
|
+
"obsidian:test": "node --test --test-concurrency=1 test/obsidian-acceptance.test.mjs test/obsidian-contract.test.mjs test/obsidian-edits.test.mjs test/obsidian-maintenance.test.mjs test/obsidian-materialization.test.mjs test/obsidian-open.test.mjs test/obsidian-package.test.mjs test/obsidian-proposals.test.mjs test/obsidian-publication-feasibility.test.mjs test/obsidian-recovery.test.mjs",
|
|
47
114
|
"upgrade:test": "node --test test/upgrade-contract.test.mjs test/upgrade.test.mjs",
|
|
48
115
|
"release:audit": "node scripts/check-release-tarball.mjs",
|
|
116
|
+
"release:candidate": "node scripts/release-candidate.mjs",
|
|
49
117
|
"repo:check": "node scripts/check-repo-disclosure.mjs",
|
|
50
118
|
"migrations:check": "node scripts/check-breaking-migrations.mjs",
|
|
51
119
|
"contract:compat": "node scripts/check-contract-compat.mjs",
|
|
120
|
+
"public-api:compat": "node scripts/check-public-api-compat.mjs",
|
|
121
|
+
"assurance:mutation-smoke": "node --test test/assurance-mutations.test.mjs",
|
|
52
122
|
"consumer:smoke": "node scripts/consumer-smoke.mjs",
|
|
53
123
|
"distribution:smoke": "node scripts/distribution-smoke.mjs",
|
|
54
|
-
"prepublishOnly": "npm run
|
|
124
|
+
"prepublishOnly": "npm run repo:check && npm run migrations:check && npm run contract:compat && npm run public-api:compat && npm run syntax:check && npm test && npm run assurance:mutation-smoke && npm run release:candidate"
|
|
55
125
|
},
|
|
56
126
|
"dependencies": {
|
|
57
127
|
"ajv": "8.20.0",
|
|
58
|
-
"ajv-formats": "3.0.1"
|
|
128
|
+
"ajv-formats": "3.0.1",
|
|
129
|
+
"fast-uri": "3.1.7"
|
|
59
130
|
},
|
|
60
131
|
"devDependencies": {
|
|
61
|
-
"@types/node": "^22.0.0"
|
|
132
|
+
"@types/node": "^22.0.0",
|
|
133
|
+
"esbuild": "0.25.12",
|
|
134
|
+
"playwright": "1.55.1",
|
|
135
|
+
"react": "19.1.0",
|
|
136
|
+
"react-dom": "19.1.0",
|
|
137
|
+
"typescript": "5.8.3"
|
|
62
138
|
},
|
|
63
139
|
"license": "Apache-2.0",
|
|
64
140
|
"repository": {
|
|
65
141
|
"type": "git",
|
|
66
142
|
"url": "git+https://github.com/MNSTRY/atelier.git"
|
|
67
143
|
},
|
|
68
|
-
"homepage": "https://mnstry.
|
|
144
|
+
"homepage": "https://docs.mnstry.ai/public-product/developers/atelier",
|
|
69
145
|
"bugs": {
|
|
70
146
|
"url": "https://github.com/MNSTRY/atelier/issues"
|
|
71
147
|
},
|
|
@@ -93,6 +169,6 @@
|
|
|
93
169
|
"access": "public"
|
|
94
170
|
},
|
|
95
171
|
"overrides": {
|
|
96
|
-
"fast-uri": "3.1.
|
|
172
|
+
"fast-uri": "3.1.7"
|
|
97
173
|
}
|
|
98
174
|
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: atelier-guided-coauthor
|
|
3
|
+
description: Guide an author through a selected packet in Codex, retaining private source-bound draft answers and resuming through the local Atelier coauthor CLI.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Guided coauthor
|
|
7
|
+
|
|
8
|
+
Use the installed `atelier coauthor` command, not a browser conversation service.
|
|
9
|
+
The author chooses the packet and may read it normally without this workflow.
|
|
10
|
+
|
|
11
|
+
Check the repository's instructions and local package first. Run
|
|
12
|
+
`./node_modules/.bin/atelier coauthor --help` from the intended repository.
|
|
13
|
+
Do not download another package if the command is unavailable. Explain that the
|
|
14
|
+
installed version needs the coauthor capability and preserve ordinary packet review.
|
|
15
|
+
|
|
16
|
+
## Start or resume
|
|
17
|
+
|
|
18
|
+
- Require an existing Git workspace with ignored, untracked `.atelier-local/`.
|
|
19
|
+
Do not change global skills, sibling repositories, credentials or remote access.
|
|
20
|
+
- Read the selected packet. Use consumer-owned field ids and workspace-relative
|
|
21
|
+
source references. Compute SHA-256 over each source file's exact UTF-8 bytes.
|
|
22
|
+
Send a `start` request containing `config: {id, fields}`; each field has
|
|
23
|
+
`id` and `source: {ref, digest}`. Packet structure stays in the consumer.
|
|
24
|
+
- Requests are JSON on stdin; responses are JSON. Use an ignored request file
|
|
25
|
+
when needed, not shell interpolation of the author's text. Read the returned
|
|
26
|
+
state and revision. `read` takes `sessionId` and resumes retained history.
|
|
27
|
+
- Ask one useful question at a time. Record the author's exact answer with an
|
|
28
|
+
`answer` event; events carry a unique `id`, `expectedRevision` and `type`.
|
|
29
|
+
Do not infer an answer or approval from silence.
|
|
30
|
+
- If proposing edited wording, use `propose` and show the change. Wait for the
|
|
31
|
+
author's explicit confirmation before `confirm`. `reject` restores the
|
|
32
|
+
original. Even apparently stylistic rewrites need confirmation.
|
|
33
|
+
- Send `save` only for the agreed draft. Say “saved as a private draft” only
|
|
34
|
+
after the command returns a saved receipt. The source packet is never edited.
|
|
35
|
+
`continueAfterSave: true` on an answer retains the author's advance intent;
|
|
36
|
+
otherwise `advance` is explicit.
|
|
37
|
+
- `pause` and `resume` preserve the current phase. On restart, a `saving`
|
|
38
|
+
state may use `recover` to reconcile the pending private write. A
|
|
39
|
+
`recovery` state requires explicit `retry`, with one retry available.
|
|
40
|
+
Stop retrying when exhausted and retain all artifacts for inspection.
|
|
41
|
+
|
|
42
|
+
## Boundaries
|
|
43
|
+
|
|
44
|
+
Never submit store-owned receipt/failure events or fabricate persistence evidence.
|
|
45
|
+
A stale source or revision is a visible conflict, not permission to overwrite it.
|
|
46
|
+
Keep the old history and obtain a newly bound session for revised sources.
|
|
47
|
+
Saved answers are proposals for later owner review, not publication, canonical
|
|
48
|
+
acceptance, guide access, or a completed packet. No saved-answer undo is provided;
|
|
49
|
+
do not erase history to simulate it. Summarize unresolved questions for the meeting.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: atelier-guided-upgrade
|
|
3
|
+
description: Prepare and explain an Atelier package upgrade in an isolated candidate, retain the owner decision, and apply only the approved effects. Use for owners asking to update an existing Atelier.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Guided Atelier upgrade
|
|
7
|
+
|
|
8
|
+
The default outcome is a reviewable candidate and an owner decision. Preserve the
|
|
9
|
+
owner's actual request and existing scoped authority; no per-command approval
|
|
10
|
+
loop is needed for actions already authorized. Preparation alone never authorizes
|
|
11
|
+
changing the working installation, merging, publishing or restarting a service.
|
|
12
|
+
|
|
13
|
+
## Establish the source and workspace
|
|
14
|
+
|
|
15
|
+
Read the selected repository's instructions and upgrade procedure. Identify its
|
|
16
|
+
actual installed scoped package, package-manager lock, Atelier lock, Git state,
|
|
17
|
+
project roots, packs, overlays and running-service ownership. Resolve the package
|
|
18
|
+
from that workspace (including a parent install); never use global Atelier,
|
|
19
|
+
unscoped registry fallback or the first sibling checkout found on disk.
|
|
20
|
+
Read `docs/guided-upgrades.md` and `docs/exact-upgrades.md` from the selected
|
|
21
|
+
installed package when present. If an old install lacks this skill or commands,
|
|
22
|
+
use the owner-selected new package's documentation only after verifying its
|
|
23
|
+
source. Repository instructions and owner authority still govern.
|
|
24
|
+
|
|
25
|
+
Select an exact release through a source already trusted by the owner. Record
|
|
26
|
+
version, source commit when verified, artifact URL/integrity and the dependency
|
|
27
|
+
lock. Mutable dist-tags are discovery hints, not final pins. A declaration in a
|
|
28
|
+
lock or a digest supplied beside a download does not authenticate a publisher.
|
|
29
|
+
An unpublished candidate must be labeled as such; use it only in an expressly
|
|
30
|
+
selected rehearsal. Never invent a release or replace a pinned install with main.
|
|
31
|
+
|
|
32
|
+
## Prepare without disturbing authoring
|
|
33
|
+
|
|
34
|
+
Use a separate candidate with an identified base. Preserve dirty source and
|
|
35
|
+
private answers; do not stash, reset, clean, stop services or commit another
|
|
36
|
+
writer's edits to create eligibility. If using a snapshot of current edits,
|
|
37
|
+
record and recheck its exact manifest; it is a snapshot, not an adopted commit.
|
|
38
|
+
Ignored answers, browser storage and runtime credentials are not in a Git clone.
|
|
39
|
+
Record that gap without importing them into a public report or projection.
|
|
40
|
+
|
|
41
|
+
Stage the selected package using the owner's package manager and lock procedure,
|
|
42
|
+
with lifecycle scripts disabled; investigate any required scripts before execution.
|
|
43
|
+
Verify the resolved identity and inventory before running its commands. Inspect
|
|
44
|
+
migration/compatibility effects before rewriting the old Atelier lock. Retain the
|
|
45
|
+
old lock and all lineage. Keep installation changes distinct from generated files.
|
|
46
|
+
|
|
47
|
+
Check exact-plan eligibility: Linux/macOS, one managed repository at `.`, config
|
|
48
|
+
and workspace at its root, linked candidate worktree, clean state and supported
|
|
49
|
+
Git settings. Packs, overlays and other unsupported participants require the
|
|
50
|
+
repository's explicit operator procedure. Do not broaden graph roots, remove
|
|
51
|
+
policies or disable filters/hooks to force eligibility. Never silently fall back
|
|
52
|
+
to legacy `upgrade --apply`; it has different guarantees.
|
|
53
|
+
|
|
54
|
+
For an eligible candidate, prepare `upgrade plan --save`, then use
|
|
55
|
+
`upgrade explain --plan SAVED_PLAN_PATH` (JSON) and `--format markdown` (owner
|
|
56
|
+
view). Invoke the verified installed binary with the explicit project path.
|
|
57
|
+
Inspect `bindingsCurrent` and blockers even when the explanation exits zero.
|
|
58
|
+
Keep source/pin/policy installation commits and the saved projection plan separate.
|
|
59
|
+
For an operator procedure, retain an exact before/after file manifest and named
|
|
60
|
+
commands instead; do not call it an exact-plan transaction or invent its digest.
|
|
61
|
+
|
|
62
|
+
## Explain and retain consent
|
|
63
|
+
|
|
64
|
+
Present the local benefit, exact target, changed files, preserved customizations,
|
|
65
|
+
checks, known limits, recovery coverage and proposed effects. Show installation,
|
|
66
|
+
local commit, merge, publication and activation separately. Ask one concrete
|
|
67
|
+
question covering the effects that still need authority. A permission to prepare
|
|
68
|
+
or a generic earlier “go” does not approve a newly introduced material effect.
|
|
69
|
+
A prior explicit approval of this same current plan and effects remains valid.
|
|
70
|
+
|
|
71
|
+
Retain a new decision record in ignored, untracked
|
|
72
|
+
`.atelier-local/guided-upgrades/` (or a private sibling evidence directory):
|
|
73
|
+
`kind: owner-decision`, report and plan/manifest SHA-256, candidate base, target
|
|
74
|
+
identity, exact owner words, conversation reference, observation time, decision
|
|
75
|
+
(approve/defer/decline), allowed effects, and
|
|
76
|
+
`humanApprovalAuthenticated: false`, `recordedBy: agent`.
|
|
77
|
+
Do not invent identity, words, references or approvals; missing provenance is a
|
|
78
|
+
reported gap. This is an agent-attested record, not an authenticated signature or
|
|
79
|
+
an execution grant. Keep existing records immutable. Silence conveys no consent.
|
|
80
|
+
|
|
81
|
+
## Apply, validate and close
|
|
82
|
+
|
|
83
|
+
After actual approval, use the saved path and exact confirmation digest literally.
|
|
84
|
+
Recheck bindings; changed or expired plans require a fresh explanation and any
|
|
85
|
+
newly necessary decision. A consumed plan is inspected, never replayed.
|
|
86
|
+
Run the repository's documented acceptance checks and inspect the actual diff.
|
|
87
|
+
Only a verified terminal transaction receipt means a candidate commit completed.
|
|
88
|
+
Honor existing hooks and keep source/answer files within their ownership boundary.
|
|
89
|
+
An operator procedure has its own validation evidence, not a transaction receipt.
|
|
90
|
+
|
|
91
|
+
Continue authorized merge/activation steps only when included in the owner's
|
|
92
|
+
scope. Report prepared, installed-in-candidate, committed, merged and running as
|
|
93
|
+
separate observed states. A local preview passing is not recipient acceptance.
|
|
94
|
+
On failure, preserve the candidate, backups and receipts; explain what changed
|
|
95
|
+
and the next safe action. Recovery inspection does not automatically restore
|
|
96
|
+
files or reset Git. Do not publish source, restart an existing service or advance
|
|
97
|
+
an author's workflow phase merely because upgrade checks passed.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: atelier-local-service
|
|
3
|
+
description: Build or repair a durable loopback-only authoring, review, or preview service in an Atelier-backed repository when local state must survive agent commands and fail safely.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Atelier local service
|
|
7
|
+
|
|
8
|
+
Use this skill for a consumer-owned service that persists repository-backed
|
|
9
|
+
local state. Do not use it to change `atelier dev` itself or to install an
|
|
10
|
+
operating-system service without explicit authorization.
|
|
11
|
+
|
|
12
|
+
Read `docs/local-services.md` from the installed Atelier package or source
|
|
13
|
+
checkout before changing lifecycle code.
|
|
14
|
+
|
|
15
|
+
## Boundary first
|
|
16
|
+
|
|
17
|
+
Separate the portable mechanism from the consumer adapter before editing:
|
|
18
|
+
|
|
19
|
+
- Atelier invariants: loopback binding, proven ownership, exact stop, ignored
|
|
20
|
+
mode-0600 state, atomic writes, recoverable browser failure, and tests.
|
|
21
|
+
- Consumer details: service identity, port, commands, paths, schema, content,
|
|
22
|
+
and user-facing language.
|
|
23
|
+
|
|
24
|
+
Never promote consumer names, content, structures, examples, or local paths
|
|
25
|
+
into Atelier. Public tests use invented fixtures.
|
|
26
|
+
|
|
27
|
+
## Workflow
|
|
28
|
+
|
|
29
|
+
1. Inspect the existing server, process owner, port, persistence file,
|
|
30
|
+
`.gitignore`, health route, save handler, and tests. Preserve the live draft
|
|
31
|
+
before restarting anything.
|
|
32
|
+
2. Expose repository-owned `start`, `status`, and `stop` commands. Start may
|
|
33
|
+
detach only because the user needs continuity beyond the launching command.
|
|
34
|
+
3. Bind to loopback. Pair a random runtime identifier with the PID in both the
|
|
35
|
+
private runtime record and health response. Refuse unowned listeners.
|
|
36
|
+
4. Keep drafts, runtime metadata, and operational logs ignored and owner-only.
|
|
37
|
+
Do not commit live authoring state.
|
|
38
|
+
5. Make the UI retain the draft when the service disappears. Show the exact
|
|
39
|
+
restart command, snapshot export, and Retry path instead of a generic error.
|
|
40
|
+
6. Serialize writes without permanently rejecting the queue after one failed
|
|
41
|
+
operation. Keep conflicts and invalid state fail-closed.
|
|
42
|
+
7. Prove lifecycle ownership, server-loss recovery, later-save recovery,
|
|
43
|
+
permissions, ignore coverage, and fresh-checkout discoverability.
|
|
44
|
+
|
|
45
|
+
Do not claim durability from a passing request alone. Report separately:
|
|
46
|
+
saved file truth, managed-process truth, browser recovery truth, and the
|
|
47
|
+
remaining OS-restart boundary.
|