diff --git a/.github/workflows/update-connect-release.yml b/.github/workflows/update-connect-release.yml index bb72da4..fd7b7b2 100644 --- a/.github/workflows/update-connect-release.yml +++ b/.github/workflows/update-connect-release.yml @@ -42,20 +42,6 @@ jobs: ref: main persist-credentials: false - - name: Read specification source identity - id: specification - run: | - echo "repository=$(jq -r '.specification.repository' site-sources.json)" >> "$GITHUB_OUTPUT" - echo "ref=$(jq -r '.specification.ref' site-sources.json)" >> "$GITHUB_OUTPUT" - - - name: Check out specification - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - repository: ${{ steps.specification.outputs.repository }} - ref: ${{ steps.specification.outputs.ref }} - path: .sources/mdbase-spec - persist-credentials: false - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 with: version: 10 @@ -71,10 +57,6 @@ jobs: - name: Install website dependencies run: pnpm install --frozen-lockfile - - name: Build specification artifact - working-directory: .sources/mdbase-spec/site - run: npm ci && npm run build - - name: Verify public evidence and generate release record env: GH_TOKEN: ${{ github.token }} @@ -82,6 +64,78 @@ jobs: MDBASE_RELEASE_NPM_DELAY_MS: "60000" run: node scripts/update-connect-release.mjs '${{ steps.release.outputs.tag }}' + # Read after the release record, which moves the Connect ref to the tag. + - name: Read pinned source identities + id: sources + run: | + echo "spec_repository=$(jq -r '.specification.repository' site-sources.json)" >> "$GITHUB_OUTPUT" + echo "spec_ref=$(jq -r '.specification.ref' site-sources.json)" >> "$GITHUB_OUTPUT" + echo "connect_repository=$(jq -r '.connect.repository' site-sources.json)" >> "$GITHUB_OUTPUT" + echo "connect_ref=$(jq -r '.connect.ref' site-sources.json)" >> "$GITHUB_OUTPUT" + echo "contracts_repository=$(jq -r '.contracts.repository' site-sources.json)" >> "$GITHUB_OUTPUT" + echo "contracts_ref=$(jq -r '.contracts.ref' site-sources.json)" >> "$GITHUB_OUTPUT" + echo "rust_repository=$(jq -r '.implementations[] | select(.id == "rust") | .repository' site-sources.json)" >> "$GITHUB_OUTPUT" + echo "rust_ref=$(jq -r '.implementations[] | select(.id == "rust") | .ref' site-sources.json)" >> "$GITHUB_OUTPUT" + echo "typescript_repository=$(jq -r '.implementations[] | select(.id == "typescript") | .repository' site-sources.json)" >> "$GITHUB_OUTPUT" + echo "typescript_ref=$(jq -r '.implementations[] | select(.id == "typescript") | .ref' site-sources.json)" >> "$GITHUB_OUTPUT" + + - name: Check out specification + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + repository: ${{ steps.sources.outputs.spec_repository }} + ref: ${{ steps.sources.outputs.spec_ref }} + path: .sources/mdbase-spec + persist-credentials: false + + - name: Check out Connect + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + repository: ${{ steps.sources.outputs.connect_repository }} + ref: ${{ steps.sources.outputs.connect_ref }} + path: .sources/mdbase-connect + persist-credentials: false + + - name: Check out contracts + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + repository: ${{ steps.sources.outputs.contracts_repository }} + ref: ${{ steps.sources.outputs.contracts_ref }} + path: .sources/mdbase-contracts + persist-credentials: false + + - name: Check out Rust implementation + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + repository: ${{ steps.sources.outputs.rust_repository }} + ref: ${{ steps.sources.outputs.rust_ref }} + path: .sources/mdbase-rs + persist-credentials: false + + - name: Check out TypeScript implementation + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + repository: ${{ steps.sources.outputs.typescript_repository }} + ref: ${{ steps.sources.outputs.typescript_ref }} + path: .sources/mdbase + persist-credentials: false + + - name: Build contract catalog + working-directory: .sources/mdbase-contracts + run: npm ci && npm run build + + - name: Build specification artifact + working-directory: .sources/mdbase-spec/site + run: npm ci && npm run build + + - name: Synchronize schemas, contracts, and conformance claims + run: pnpm sync:sources + env: + MDBASE_SPEC_DIR: .sources/mdbase-spec + MDBASE_CONNECT_DIR: .sources/mdbase-connect + MDBASE_CONTRACTS_DIR: .sources/mdbase-contracts + MDBASE_RS_DIR: .sources/mdbase-rs + MDBASE_TS_DIR: .sources/mdbase + - name: Validate generated website env: GH_TOKEN: ${{ github.token }} diff --git a/.gitignore b/.gitignore index 24e9a55..9472de1 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,19 @@ dist/ .sources/ .DS_Store + +# Generated by `pnpm sync:sources` from the refs pinned in site-sources.json. +# CI and deployment regenerate them before every build. +/public/connect/schemas/* +!/public/connect/schemas/contract-extension.v1.schema.json +/public/contracts/ +/public/interop/schemas/v0.1/ +/public/testbed/schemas/v0.1/ +/public/testbed/v0.1/ +/public/runtime/schemas/v0.2/ +/public/mdbase-introduction.css +/public/mdbase-theme.css +/public/mdbase-shell.css +/public/theme-bootstrap.js +/src/data/contracts.json +/src/data/conformance.json diff --git a/README.md b/README.md index c0836e4..ee8e445 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,12 @@ pnpm dev The source synchronizer reads sibling checkouts of `mdbase-spec`, `mdbase-connect`, `mdbase-contracts`, `mdbase-rs`, and `mdbase` by default. Override their paths with `MDBASE_SPEC_DIR`, `MDBASE_CONNECT_DIR`, -`MDBASE_CONTRACTS_DIR`, `MDBASE_RS_DIR`, and `MDBASE_TS_DIR`. +`MDBASE_CONTRACTS_DIR`, `MDBASE_RS_DIR`, and `MDBASE_TS_DIR`. Check those +checkouts out at the refs in `site-sources.json` to match production. The +synchronized schemas, contracts and conformance data are generated and +untracked (see `.gitignore`), so run the synchronizer before building. CI, +deployment and the Connect release update all regenerate them from the pinned +refs. To change what the site publishes, change `site-sources.json`. ## Production build diff --git a/public/connect/schemas/application-capability-catalog.v1.json b/public/connect/schemas/application-capability-catalog.v1.json deleted file mode 100644 index f827e77..0000000 --- a/public/connect/schemas/application-capability-catalog.v1.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "catalog_version": 1, - "capabilities": [ - { "id": "collection.inspect", "operations": ["describe"] }, - { "id": "records.watch", "operations": ["changes"] }, - { "id": "records.read", "operations": ["read"] }, - { "id": "records.query", "operations": ["query"] }, - { "id": "records.validate", "operations": ["validate"] }, - { "id": "records.create", "operations": ["create"] }, - { "id": "records.update", "operations": ["update"] }, - { "id": "records.delete", "operations": ["delete"] }, - { "id": "records.rename", "operations": ["rename"] }, - { "id": "views.list", "operations": ["list_views"] }, - { "id": "views.execute", "operations": ["execute_view"] }, - { "id": "views.source.read", "operations": ["read_view_source"] }, - { "id": "views.source.create", "operations": ["create_view_source"] }, - { "id": "views.source.update", "operations": ["update_view_source"] }, - { "id": "views.source.delete", "operations": ["delete_view_source"] }, - { "id": "definitions.contracts.current", "operations": [] }, - { "id": "definitions.read", "operations": ["read_type"] }, - { "id": "definitions.create", "operations": ["create_type"] }, - { "id": "definitions.update", "operations": ["update_type"] }, - { "id": "definitions.type-pack.inspect", "operations": ["assess_type_pack"] }, - { "id": "definitions.type-pack.apply", "operations": ["assess_type_pack", "apply_type_pack"] }, - { "id": "collection.setup.apply", "operations": ["assess_collection_setup", "apply_collection_setup"] }, - { "id": "timers.list", "operations": ["list_timers"] }, - { "id": "timers.put", "operations": ["put_timer"] }, - { "id": "timers.cancel", "operations": ["cancel_timer"] }, - { "id": "timers.reconcile", "operations": ["reconcile_timers"] }, - { "id": "sync.offline-replica", "operations": ["sync"] }, - { "id": "notifications.background-delivery", "operations": [] }, - { "id": "files.list", "operations": [] }, - { "id": "files.read", "operations": [] }, - { "id": "files.add", "operations": [] }, - { "id": "files.replace", "operations": [] }, - { "id": "files.move", "operations": [] }, - { "id": "files.delete", "operations": [] } - ] -} diff --git a/public/connect/schemas/application-capability-catalog.v2.json b/public/connect/schemas/application-capability-catalog.v2.json deleted file mode 100644 index a8d50de..0000000 --- a/public/connect/schemas/application-capability-catalog.v2.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "catalog_version": 2, - "capabilities": [ - { - "id": "collection.read", - "operations": [ - "describe", - "changes", - "read", - "query", - "list_views", - "execute_view", - "read_view_source", - "validate", - "read_type" - ] - }, - { - "id": "records.create", - "operations": ["create"] - }, - { - "id": "records.edit", - "operations": ["update", "rename"] - }, - { - "id": "records.delete", - "operations": ["delete"] - }, - { - "id": "views.manage", - "operations": [ - "create_view_source", - "update_view_source", - "delete_view_source" - ] - }, - { - "id": "definitions.manage", - "operations": [ - "create_type", - "update_type", - "assess_type_pack", - "apply_type_pack" - ] - }, - { - "id": "background.schedule", - "operations": [ - "list_timers", - "put_timer", - "cancel_timer", - "reconcile_timers" - ] - }, - { - "id": "offline.replica", - "operations": ["sync"] - } - ], - "structured_authorities": { - "application_setup": [ - "assess_collection_setup", - "apply_collection_setup" - ] - } -} diff --git a/public/connect/schemas/catalog.json b/public/connect/schemas/catalog.json deleted file mode 100644 index 4e77eb6..0000000 --- a/public/connect/schemas/catalog.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "manifest_version": 1, - "schemas": { - "app_manifest": "./mdbase-app.schema.json", - "data_contract": "./data-contract.schema.json", - "event_action_interop": "./interop/v0.1/profile.schema.json", - "connect_protocol": "./connect-protocol.v1.schema.json", - "connect_problem": "./connect-problem.v1.schema.json", - "connect_problem_catalog": "./connect-problems.v1.catalog.json", - "mdbase_query_v0_3": "./mdbase-query.v0.3.schema.json", - "encrypted_relay": "./encrypted-relay.v3.schema.json", - "encrypted_relay_legacy_v2": "./encrypted-relay.v2.schema.json", - "files": "./files.v1.schema.json", - "notification_webhook": "./notification-webhook.v1.schema.json", - "sync": "./sync.v1.schema.json" - } -} diff --git a/public/connect/schemas/change-events.v1.json b/public/connect/schemas/change-events.v1.json deleted file mode 100644 index ef40ee0..0000000 --- a/public/connect/schemas/change-events.v1.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "version": 1, - "events": { - "mdbase.record.created": "record.created", - "mdbase.record.modified": "record.updated", - "mdbase.record.deleted": "record.deleted", - "mdbase.record.renamed": "record.renamed", - "mdbase.type.changed": "schema.changed", - "mdbase.config.changed": "config.changed", - "mdbase.contract.changed": "contract.changed", - "mdbase.view.changed": "view.changed", - "mdbase.view_source.changed": "view.changed", - "mdbase.resource.changed": "file.changed", - "mdbase.file.put": "file.put", - "mdbase.file.remove": "file.removed", - "file_put": "file.put", - "file_remove": "file.removed", - "mdbase.collection.invalidated": "gap" - }, - "payloads": { - "RecordChangePayload": { - "path": "string", - "from": "string", - "to": "string", - "previous_revision": "string", - "revision": "string", - "previous_types": "strings", - "types": "strings", - "changed_fields": "strings", - "body_changed": "boolean", - "before": "object", - "after": "object" - }, - "ResourceChangePayload": { - "name": "string", - "path": "string", - "previous_revision": "string", - "revision": "string", - "reason": "string" - }, - "FileChangePayload": { - "file": "file", - "file_id": "string", - "previous_path": "string", - "revision": "string" - } - } -} diff --git a/public/connect/schemas/connect-problem.v1.schema.json b/public/connect/schemas/connect-problem.v1.schema.json deleted file mode 100644 index d6dd0cb..0000000 --- a/public/connect/schemas/connect-problem.v1.schema.json +++ /dev/null @@ -1,5172 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://schemas.mdbase.dev/connect/problem/v1", - "title": "mdbase connect problem v1", - "oneOf": [ - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "access_denied" - }, - "category": { - "const": "authorization" - }, - "recovery": { - "const": "reauthorize" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - }, - "details": { - "type": "object", - "additionalProperties": false, - "required": [], - "properties": { - "return_to": { - "type": "string" - } - } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "access_paused" - }, - "category": { - "const": "availability" - }, - "recovery": { - "const": "resume_connector_access" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "application_declaration_mismatch" - }, - "category": { - "const": "authorization" - }, - "recovery": { - "const": "reauthorize" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "application_identity_unavailable" - }, - "category": { - "const": "compatibility" - }, - "recovery": { - "const": "upgrade_application" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message", - "details" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "approval_window_blocked" - }, - "category": { - "const": "authorization" - }, - "recovery": { - "const": "reauthorize" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - }, - "details": { - "type": "object", - "additionalProperties": false, - "required": [ - "user_code", - "verification_uri", - "verification_uri_complete", - "expires_at", - "interval_seconds" - ], - "properties": { - "user_code": { - "type": "string" - }, - "verification_uri": { - "type": "string" - }, - "verification_uri_complete": { - "type": "string" - }, - "expires_at": { - "type": "integer" - }, - "interval_seconds": { - "type": "integer" - } - } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "authority_authorization_changed" - }, - "category": { - "const": "authorization" - }, - "recovery": { - "const": "reauthorize" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message", - "details" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "authorization_binding_incompatible" - }, - "category": { - "const": "compatibility" - }, - "recovery": { - "const": "upgrade_application" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - }, - "details": { - "type": "object", - "additionalProperties": false, - "required": [ - "contract", - "required", - "supported", - "peer" - ], - "properties": { - "contract": { - "type": "string" - }, - "required": { - "type": "array", - "items": { - "type": "integer" - } - }, - "supported": { - "type": "array", - "items": { - "type": "integer" - } - }, - "peer": { - "type": "string" - }, - "operation": { - "type": "string" - } - } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "authorization_cancelled" - }, - "category": { - "const": "cancellation" - }, - "recovery": { - "const": "none" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "authorization_expired" - }, - "category": { - "const": "authorization" - }, - "recovery": { - "const": "reauthorize" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "authorization_replayed" - }, - "category": { - "const": "integrity" - }, - "recovery": { - "const": "reauthorize" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "browser_required" - }, - "category": { - "const": "compatibility" - }, - "recovery": { - "const": "none" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "callback_url_required" - }, - "category": { - "const": "validation" - }, - "recovery": { - "const": "fix_request" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message", - "details" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "capability_contract_incompatible" - }, - "category": { - "const": "compatibility" - }, - "recovery": { - "const": "upgrade_application" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - }, - "details": { - "type": "object", - "additionalProperties": false, - "required": [ - "contract", - "required", - "supported", - "peer" - ], - "properties": { - "contract": { - "type": "string" - }, - "required": { - "type": "array", - "items": { - "type": "integer" - } - }, - "supported": { - "type": "array", - "items": { - "type": "integer" - } - }, - "peer": { - "type": "string" - }, - "operation": { - "type": "string" - } - } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "change_cursor_reset" - }, - "category": { - "const": "conflict" - }, - "recovery": { - "const": "refresh" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "collection_access_denied" - }, - "category": { - "const": "authorization" - }, - "recovery": { - "const": "reauthorize" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message", - "details" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "collection_configuration_invalid" - }, - "category": { - "const": "validation" - }, - "recovery": { - "const": "repair_collection" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - }, - "details": { - "type": "object", - "additionalProperties": false, - "required": [ - "diagnostics" - ], - "properties": { - "diagnostics": { - "type": "array", - "items": { - "type": "object" - } - } - } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message", - "details" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "collection_contracts_missing" - }, - "category": { - "const": "compatibility" - }, - "recovery": { - "const": "choose_collection" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - }, - "details": { - "type": "object", - "additionalProperties": false, - "required": [ - "contracts" - ], - "properties": { - "contracts": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "collection_incompatible" - }, - "category": { - "const": "compatibility" - }, - "recovery": { - "const": "choose_collection" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message", - "details" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "collection_invalid" - }, - "category": { - "const": "validation" - }, - "recovery": { - "const": "repair_collection" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - }, - "details": { - "type": "object", - "additionalProperties": false, - "required": [ - "diagnostics" - ], - "properties": { - "diagnostics": { - "type": "array", - "items": { - "type": "object" - } - } - } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "collection_kind_unsupported" - }, - "category": { - "const": "compatibility" - }, - "recovery": { - "const": "choose_collection" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "collection_mismatch" - }, - "category": { - "const": "selection" - }, - "recovery": { - "const": "choose_collection" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "collection_not_found" - }, - "category": { - "const": "selection" - }, - "recovery": { - "const": "choose_collection" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "collection_not_ready" - }, - "category": { - "const": "selection" - }, - "recovery": { - "const": "choose_collection" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "collection_not_selected" - }, - "category": { - "const": "selection" - }, - "recovery": { - "const": "choose_collection" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message", - "details" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "collection_type_registry_invalid" - }, - "category": { - "const": "validation" - }, - "recovery": { - "const": "repair_collection" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - }, - "details": { - "type": "object", - "additionalProperties": false, - "required": [ - "diagnostics" - ], - "properties": { - "diagnostics": { - "type": "array", - "items": { - "type": "object" - } - } - } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message", - "details" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "collection_version_unsupported" - }, - "category": { - "const": "compatibility" - }, - "recovery": { - "const": "upgrade_collection" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - }, - "details": { - "type": "object", - "additionalProperties": false, - "required": [ - "current_version", - "required_version" - ], - "properties": { - "current_version": { - "type": "string" - }, - "required_version": { - "type": "string" - } - } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "concurrent_modification" - }, - "category": { - "const": "conflict" - }, - "recovery": { - "const": "refresh" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "connector_busy" - }, - "category": { - "const": "availability" - }, - "recovery": { - "const": "retry" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "connector_identity_changed" - }, - "category": { - "const": "integrity" - }, - "recovery": { - "const": "reauthorize" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "connector_offline" - }, - "category": { - "const": "availability" - }, - "recovery": { - "const": "retry" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - }, - "details": { - "type": "object", - "additionalProperties": false, - "required": [], - "properties": { - "connector_name": { - "type": "string" - } - } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "connector_upgrade_required" - }, - "category": { - "const": "compatibility" - }, - "recovery": { - "const": "upgrade_connector" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "cursor_capacity_exhausted" - }, - "category": { - "const": "availability" - }, - "recovery": { - "const": "retry" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "device_authorization_failed" - }, - "category": { - "const": "authorization" - }, - "recovery": { - "const": "reauthorize" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "direct_operation_rejected" - }, - "category": { - "const": "authorization" - }, - "recovery": { - "const": "reauthorize" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "discovery_failed" - }, - "category": { - "const": "availability" - }, - "recovery": { - "const": "retry" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message", - "details" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "durable_mutation_unsupported" - }, - "category": { - "const": "compatibility" - }, - "recovery": { - "const": "upgrade_connector" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - }, - "details": { - "type": "object", - "additionalProperties": false, - "required": [ - "contract", - "required", - "supported", - "peer" - ], - "properties": { - "contract": { - "type": "string" - }, - "required": { - "type": "array", - "items": { - "type": "integer" - } - }, - "supported": { - "type": "array", - "items": { - "type": "integer" - } - }, - "peer": { - "type": "string" - }, - "operation": { - "type": "string" - } - } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "encrypted_relay_rejected" - }, - "category": { - "const": "authorization" - }, - "recovery": { - "const": "reauthorize" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "encryption_required" - }, - "category": { - "const": "authorization" - }, - "recovery": { - "const": "reauthorize" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "expired_token" - }, - "category": { - "const": "authorization" - }, - "recovery": { - "const": "reauthorize" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "file_changed_during_move" - }, - "category": { - "const": "conflict" - }, - "recovery": { - "const": "refresh" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "file_changed_during_read" - }, - "category": { - "const": "conflict" - }, - "recovery": { - "const": "refresh" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "file_index_warming" - }, - "category": { - "const": "availability" - }, - "recovery": { - "const": "retry" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "file_list_changed" - }, - "category": { - "const": "conflict" - }, - "recovery": { - "const": "refresh" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "file_move_failed" - }, - "category": { - "const": "internal" - }, - "recovery": { - "const": "contact_support" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "file_mutation_conflict" - }, - "category": { - "const": "conflict" - }, - "recovery": { - "const": "resolve_conflict" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "file_not_found" - }, - "category": { - "const": "conflict" - }, - "recovery": { - "const": "refresh" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "file_source_mismatch" - }, - "category": { - "const": "conflict" - }, - "recovery": { - "const": "refresh" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "file_upload_incomplete" - }, - "category": { - "const": "conflict" - }, - "recovery": { - "const": "retry" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "fresh_request_required" - }, - "category": { - "const": "availability" - }, - "recovery": { - "const": "retry" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "generation_expired" - }, - "category": { - "const": "conflict" - }, - "recovery": { - "const": "refresh" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "hosted_provider_unavailable" - }, - "category": { - "const": "availability" - }, - "recovery": { - "const": "retry" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message", - "details" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "insufficient_access" - }, - "category": { - "const": "authorization" - }, - "recovery": { - "const": "reauthorize" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - }, - "details": { - "type": "object", - "additionalProperties": false, - "required": [ - "required_operations", - "granted_operations", - "missing_operations" - ], - "properties": { - "required_operations": { - "type": "array", - "items": { - "type": "string" - } - }, - "granted_operations": { - "type": "array", - "items": { - "type": "string" - } - }, - "missing_operations": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "invalid_application_authorization" - }, - "category": { - "const": "validation" - }, - "recovery": { - "const": "fix_request" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message", - "details" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "invalid_application_manifest" - }, - "category": { - "const": "validation" - }, - "recovery": { - "const": "fix_request" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - }, - "details": { - "type": "object", - "additionalProperties": false, - "required": [ - "issues" - ], - "properties": { - "issues": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "path", - "keyword", - "message", - "params" - ], - "properties": { - "path": { - "type": "string" - }, - "keyword": { - "type": "string" - }, - "message": { - "type": "string" - }, - "params": { - "type": "object" - } - } - } - } - } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "invalid_callback" - }, - "category": { - "const": "validation" - }, - "recovery": { - "const": "fix_request" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "invalid_device_authorization_response" - }, - "category": { - "const": "integrity" - }, - "recovery": { - "const": "contact_support" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "invalid_encrypted_response" - }, - "category": { - "const": "integrity" - }, - "recovery": { - "const": "contact_support" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "invalid_loopback_url" - }, - "category": { - "const": "validation" - }, - "recovery": { - "const": "fix_request" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "invalid_mutation_id" - }, - "category": { - "const": "validation" - }, - "recovery": { - "const": "fix_request" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "invalid_operation_response" - }, - "category": { - "const": "integrity" - }, - "recovery": { - "const": "contact_support" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "invalid_path" - }, - "category": { - "const": "validation" - }, - "recovery": { - "const": "fix_request" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "invalid_preflight" - }, - "category": { - "const": "conflict" - }, - "recovery": { - "const": "refresh" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "invalid_push_payload" - }, - "category": { - "const": "validation" - }, - "recovery": { - "const": "fix_request" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "invalid_push_subscription" - }, - "category": { - "const": "validation" - }, - "recovery": { - "const": "fix_request" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "invalid_read_cursor" - }, - "category": { - "const": "validation" - }, - "recovery": { - "const": "fix_request" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "invalid_request" - }, - "category": { - "const": "validation" - }, - "recovery": { - "const": "fix_request" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "invalid_token_response" - }, - "category": { - "const": "integrity" - }, - "recovery": { - "const": "contact_support" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "legacy_scope_reauthorization_required" - }, - "category": { - "const": "authorization" - }, - "recovery": { - "const": "reauthorize" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "managed_fcm_not_declared" - }, - "category": { - "const": "compatibility" - }, - "recovery": { - "const": "fix_request" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "manifest_load_failed" - }, - "category": { - "const": "availability" - }, - "recovery": { - "const": "retry" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "manifest_required" - }, - "category": { - "const": "validation" - }, - "recovery": { - "const": "fix_request" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "missing_grant_key" - }, - "category": { - "const": "authorization" - }, - "recovery": { - "const": "reauthorize" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "mutation_recovery_expired" - }, - "category": { - "const": "compatibility" - }, - "recovery": { - "const": "none" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message", - "details" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "mutation_request_conflict" - }, - "category": { - "const": "conflict" - }, - "recovery": { - "const": "resolve_conflict" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - }, - "details": { - "type": "object", - "additionalProperties": false, - "required": [ - "request_id" - ], - "properties": { - "request_id": { - "type": "string" - } - } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "no_pending_mutation" - }, - "category": { - "const": "conflict" - }, - "recovery": { - "const": "refresh" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "not_authorized" - }, - "category": { - "const": "authorization" - }, - "recovery": { - "const": "reauthorize" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "not_remote_authority" - }, - "category": { - "const": "compatibility" - }, - "recovery": { - "const": "choose_collection" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "notification_criterion_not_declared" - }, - "category": { - "const": "validation" - }, - "recovery": { - "const": "fix_request" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "notification_reauthorization_required" - }, - "category": { - "const": "authorization" - }, - "recovery": { - "const": "reauthorize" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "notification_registration_failed" - }, - "category": { - "const": "availability" - }, - "recovery": { - "const": "retry" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "notification_unregistration_failed" - }, - "category": { - "const": "availability" - }, - "recovery": { - "const": "retry" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "notifications_not_declared" - }, - "category": { - "const": "compatibility" - }, - "recovery": { - "const": "fix_request" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "notifications_unavailable" - }, - "category": { - "const": "availability" - }, - "recovery": { - "const": "retry" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "operation_cancelled" - }, - "category": { - "const": "cancellation" - }, - "recovery": { - "const": "none" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "operation_failed" - }, - "category": { - "const": "internal" - }, - "recovery": { - "const": "contact_support" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message", - "details" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "operation_invalid" - }, - "category": { - "const": "validation" - }, - "recovery": { - "const": "fix_request" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - }, - "details": { - "type": "object", - "additionalProperties": false, - "required": [ - "diagnostics" - ], - "properties": { - "diagnostics": { - "type": "array", - "items": { - "type": "object" - } - }, - "partial_result": true - } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message", - "details" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "operation_outcome_unknown" - }, - "category": { - "const": "conflict" - }, - "recovery": { - "const": "resolve_outcome" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - }, - "details": { - "type": "object", - "additionalProperties": false, - "required": [ - "request_id" - ], - "properties": { - "request_id": { - "type": "string" - } - } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "path_occupied" - }, - "category": { - "const": "conflict" - }, - "recovery": { - "const": "resolve_conflict" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "pending_mutation_unresolved" - }, - "category": { - "const": "conflict" - }, - "recovery": { - "const": "resolve_outcome" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "query_snapshot_changed" - }, - "category": { - "const": "conflict" - }, - "recovery": { - "const": "refresh" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "rate_limited" - }, - "category": { - "const": "availability" - }, - "recovery": { - "const": "retry" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - }, - "details": { - "type": "object", - "additionalProperties": false, - "required": [], - "properties": { - "retry_after_ms": { - "type": "integer" - } - } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "reconnect_required" - }, - "category": { - "const": "authorization" - }, - "recovery": { - "const": "reauthorize" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "redirect_uri_required" - }, - "category": { - "const": "validation" - }, - "recovery": { - "const": "fix_request" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "reference_updates_unsupported" - }, - "category": { - "const": "compatibility" - }, - "recovery": { - "const": "fix_request" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "registry_backup_invalid" - }, - "category": { - "const": "integrity" - }, - "recovery": { - "const": "contact_support" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "registry_busy" - }, - "category": { - "const": "availability" - }, - "recovery": { - "const": "retry" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "registry_corrupt" - }, - "category": { - "const": "integrity" - }, - "recovery": { - "const": "repair_collection" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "registry_migration_failed" - }, - "category": { - "const": "internal" - }, - "recovery": { - "const": "contact_support" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "registry_schema_incompatible" - }, - "category": { - "const": "compatibility" - }, - "recovery": { - "const": "upgrade_connector" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "relay_authorization_expired" - }, - "category": { - "const": "authorization" - }, - "recovery": { - "const": "reauthorize" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "relay_unavailable" - }, - "category": { - "const": "availability" - }, - "recovery": { - "const": "retry" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "sandbox_unsupported" - }, - "category": { - "const": "compatibility" - }, - "recovery": { - "const": "fix_request" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "scope_denied" - }, - "category": { - "const": "authorization" - }, - "recovery": { - "const": "reauthorize" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "session_destroyed" - }, - "category": { - "const": "cancellation" - }, - "recovery": { - "const": "none" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "session_not_started" - }, - "category": { - "const": "validation" - }, - "recovery": { - "const": "fix_request" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "session_starting" - }, - "category": { - "const": "availability" - }, - "recovery": { - "const": "retry" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "stale_file_revision" - }, - "category": { - "const": "conflict" - }, - "recovery": { - "const": "refresh" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "storage_required" - }, - "category": { - "const": "compatibility" - }, - "recovery": { - "const": "none" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "sync_failed" - }, - "category": { - "const": "availability" - }, - "recovery": { - "const": "retry" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "temporarily_unavailable" - }, - "category": { - "const": "availability" - }, - "recovery": { - "const": "retry" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "timeout" - }, - "category": { - "const": "availability" - }, - "recovery": { - "const": "retry" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "token_exchange_failed" - }, - "category": { - "const": "availability" - }, - "recovery": { - "const": "retry" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message", - "details" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "transport_protocol_incompatible" - }, - "category": { - "const": "compatibility" - }, - "recovery": { - "const": "upgrade_connector" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - }, - "details": { - "type": "object", - "additionalProperties": false, - "required": [ - "contract", - "required", - "supported", - "peer" - ], - "properties": { - "contract": { - "type": "string" - }, - "required": { - "type": "array", - "items": { - "type": "integer" - } - }, - "supported": { - "type": "array", - "items": { - "type": "integer" - } - }, - "peer": { - "type": "string" - }, - "operation": { - "type": "string" - } - } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "type_pack_provision_failed" - }, - "category": { - "const": "validation" - }, - "recovery": { - "const": "repair_collection" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "unknown_collection" - }, - "category": { - "const": "selection" - }, - "recovery": { - "const": "choose_collection" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "unsafe_file_path" - }, - "category": { - "const": "validation" - }, - "recovery": { - "const": "fix_request" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "unsupported_encryption" - }, - "category": { - "const": "compatibility" - }, - "recovery": { - "const": "upgrade_application" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "unsupported_operation" - }, - "category": { - "const": "compatibility" - }, - "recovery": { - "const": "fix_request" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "problem_version", - "code", - "server_code", - "category", - "recovery", - "message" - ], - "properties": { - "problem_version": { - "const": 1 - }, - "code": { - "const": "unknown" - }, - "server_code": { - "type": "string", - "minLength": 1 - }, - "category": { - "const": "unknown" - }, - "recovery": { - "const": "none" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "details": true, - "operation_outcome": { - "enum": [ - "not_sent", - "rejected", - "unknown" - ] - }, - "trace_id": { - "type": "string", - "minLength": 1 - } - } - } - ] -} diff --git a/public/connect/schemas/connect-problems.v1.catalog.json b/public/connect/schemas/connect-problems.v1.catalog.json deleted file mode 100644 index 808a84f..0000000 --- a/public/connect/schemas/connect-problems.v1.catalog.json +++ /dev/null @@ -1,352 +0,0 @@ -{ - "problem_version": 1, - "categories": [ - "authorization", - "availability", - "cancellation", - "compatibility", - "conflict", - "integrity", - "internal", - "selection", - "validation" - ], - "recovery_actions": [ - "choose_collection", - "contact_support", - "fix_request", - "none", - "reauthorize", - "refresh", - "repair_collection", - "resume_connector_access", - "resolve_conflict", - "resolve_outcome", - "retry", - "upgrade_application", - "upgrade_collection", - "upgrade_connector" - ], - "codes": { - "access_denied": { - "category": "authorization", - "recovery": "reauthorize", - "details": { - "required": [], - "properties": { "return_to": { "type": "string" } } - } - }, - "access_paused": { "category": "availability", "recovery": "resume_connector_access" }, - "application_declaration_mismatch": { "category": "authorization", "recovery": "reauthorize" }, - "application_identity_unavailable": { "category": "compatibility", "recovery": "upgrade_application" }, - "approval_window_blocked": { - "category": "authorization", - "recovery": "reauthorize", - "details": { - "required": ["user_code", "verification_uri", "verification_uri_complete", "expires_at", "interval_seconds"], - "properties": { - "user_code": { "type": "string" }, - "verification_uri": { "type": "string" }, - "verification_uri_complete": { "type": "string" }, - "expires_at": { "type": "integer" }, - "interval_seconds": { "type": "integer" } - } - } - }, - "authority_authorization_changed": { "category": "authorization", "recovery": "reauthorize" }, - "authorization_binding_incompatible": { - "category": "compatibility", - "recovery": "upgrade_application", - "details": { - "required": ["contract", "required", "supported", "peer"], - "properties": { - "contract": { "type": "string" }, - "required": { "type": "array", "items": { "type": "integer" } }, - "supported": { "type": "array", "items": { "type": "integer" } }, - "peer": { "type": "string" }, - "operation": { "type": "string" } - } - } - }, - "authorization_cancelled": { "category": "cancellation", "recovery": "none" }, - "authorization_expired": { "category": "authorization", "recovery": "reauthorize" }, - "authorization_replayed": { "category": "integrity", "recovery": "reauthorize" }, - "browser_required": { "category": "compatibility", "recovery": "none" }, - "callback_url_required": { "category": "validation", "recovery": "fix_request" }, - "capability_contract_incompatible": { - "category": "compatibility", - "recovery": "upgrade_application", - "details": { - "required": ["contract", "required", "supported", "peer"], - "properties": { - "contract": { "type": "string" }, - "required": { "type": "array", "items": { "type": "integer" } }, - "supported": { "type": "array", "items": { "type": "integer" } }, - "peer": { "type": "string" }, - "operation": { "type": "string" } - } - } - }, - "change_cursor_reset": { "category": "conflict", "recovery": "refresh" }, - "collection_access_denied": { "category": "authorization", "recovery": "reauthorize" }, - "collection_configuration_invalid": { - "category": "validation", - "recovery": "repair_collection", - "details": { - "required": ["diagnostics"], - "properties": { - "diagnostics": { "type": "array", "items": { "type": "object" } } - } - } - }, - "collection_contracts_missing": { - "category": "compatibility", - "recovery": "choose_collection", - "details": { - "required": ["contracts"], - "properties": { - "contracts": { - "type": "array", - "items": { - "type": "object", - "required": ["id", "version"], - "properties": { - "id": { "type": "string" }, - "version": { "type": "string" } - } - } - } - } - } - }, - "collection_incompatible": { "category": "compatibility", "recovery": "choose_collection" }, - "collection_invalid": { - "category": "validation", - "recovery": "repair_collection", - "details": { - "required": ["diagnostics"], - "properties": { - "diagnostics": { "type": "array", "items": { "type": "object" } } - } - } - }, - "collection_kind_unsupported": { "category": "compatibility", "recovery": "choose_collection" }, - "collection_mismatch": { "category": "selection", "recovery": "choose_collection" }, - "collection_not_found": { "category": "selection", "recovery": "choose_collection" }, - "collection_not_ready": { "category": "selection", "recovery": "choose_collection" }, - "collection_not_selected": { "category": "selection", "recovery": "choose_collection" }, - "collection_type_registry_invalid": { - "category": "validation", - "recovery": "repair_collection", - "details": { - "required": ["diagnostics"], - "properties": { - "diagnostics": { "type": "array", "items": { "type": "object" } } - } - } - }, - "collection_version_unsupported": { - "category": "compatibility", - "recovery": "upgrade_collection", - "details": { - "required": ["current_version", "required_version"], - "properties": { - "current_version": { "type": "string" }, - "required_version": { "type": "string" } - } - } - }, - "concurrent_modification": { "category": "conflict", "recovery": "refresh" }, - "connector_busy": { "category": "availability", "recovery": "retry" }, - "connector_identity_changed": { "category": "integrity", "recovery": "reauthorize" }, - "connector_offline": { - "category": "availability", - "recovery": "retry", - "details": { - "required": [], - "properties": { - "connector_name": { "type": "string" } - } - } - }, - "connector_upgrade_required": { "category": "compatibility", "recovery": "upgrade_connector" }, - "cursor_capacity_exhausted": { "category": "availability", "recovery": "retry" }, - "device_authorization_failed": { "category": "authorization", "recovery": "reauthorize" }, - "direct_operation_rejected": { "category": "authorization", "recovery": "reauthorize" }, - "discovery_failed": { "category": "availability", "recovery": "retry" }, - "durable_mutation_unsupported": { - "category": "compatibility", - "recovery": "upgrade_connector", - "details": { - "required": ["contract", "required", "supported", "peer"], - "properties": { - "contract": { "type": "string" }, - "required": { "type": "array", "items": { "type": "integer" } }, - "supported": { "type": "array", "items": { "type": "integer" } }, - "peer": { "type": "string" }, - "operation": { "type": "string" } - } - } - }, - "encrypted_relay_rejected": { "category": "authorization", "recovery": "reauthorize" }, - "encryption_required": { "category": "authorization", "recovery": "reauthorize" }, - "expired_token": { "category": "authorization", "recovery": "reauthorize" }, - "file_changed_during_move": { "category": "conflict", "recovery": "refresh" }, - "file_changed_during_read": { "category": "conflict", "recovery": "refresh" }, - "file_index_warming": { "category": "availability", "recovery": "retry" }, - "file_list_changed": { "category": "conflict", "recovery": "refresh" }, - "file_move_failed": { "category": "internal", "recovery": "contact_support" }, - "file_mutation_conflict": { "category": "conflict", "recovery": "resolve_conflict" }, - "file_not_found": { "category": "conflict", "recovery": "refresh" }, - "file_source_mismatch": { "category": "conflict", "recovery": "refresh" }, - "file_upload_incomplete": { "category": "conflict", "recovery": "retry" }, - "fresh_request_required": { "category": "availability", "recovery": "retry" }, - "generation_expired": { "category": "conflict", "recovery": "refresh" }, - "hosted_provider_unavailable": { "category": "availability", "recovery": "retry" }, - "insufficient_access": { - "category": "authorization", - "recovery": "reauthorize", - "details": { - "required": ["required_operations", "granted_operations", "missing_operations"], - "properties": { - "required_operations": { "type": "array", "items": { "type": "string" } }, - "granted_operations": { "type": "array", "items": { "type": "string" } }, - "missing_operations": { "type": "array", "items": { "type": "string" } } - } - } - }, - "invalid_application_authorization": { "category": "validation", "recovery": "fix_request" }, - "invalid_application_manifest": { - "category": "validation", - "recovery": "fix_request", - "details": { - "required": ["issues"], - "properties": { - "issues": { - "type": "array", - "items": { - "type": "object", - "required": ["path", "keyword", "message", "params"], - "properties": { - "path": { "type": "string" }, - "keyword": { "type": "string" }, - "message": { "type": "string" }, - "params": { "type": "object" } - } - } - } - } - } - }, - "invalid_callback": { "category": "validation", "recovery": "fix_request" }, - "invalid_device_authorization_response": { "category": "integrity", "recovery": "contact_support" }, - "invalid_encrypted_response": { "category": "integrity", "recovery": "contact_support" }, - "invalid_loopback_url": { "category": "validation", "recovery": "fix_request" }, - "invalid_mutation_id": { "category": "validation", "recovery": "fix_request" }, - "invalid_operation_response": { "category": "integrity", "recovery": "contact_support" }, - "invalid_path": { "category": "validation", "recovery": "fix_request" }, - "invalid_preflight": { "category": "conflict", "recovery": "refresh" }, - "invalid_push_payload": { "category": "validation", "recovery": "fix_request" }, - "invalid_push_subscription": { "category": "validation", "recovery": "fix_request" }, - "invalid_read_cursor": { "category": "validation", "recovery": "fix_request" }, - "invalid_request": { "category": "validation", "recovery": "fix_request" }, - "invalid_token_response": { "category": "integrity", "recovery": "contact_support" }, - "legacy_scope_reauthorization_required": { "category": "authorization", "recovery": "reauthorize" }, - "managed_fcm_not_declared": { "category": "compatibility", "recovery": "fix_request" }, - "manifest_load_failed": { "category": "availability", "recovery": "retry" }, - "manifest_required": { "category": "validation", "recovery": "fix_request" }, - "missing_grant_key": { "category": "authorization", "recovery": "reauthorize" }, - "mutation_recovery_expired": { "category": "compatibility", "recovery": "none" }, - "mutation_request_conflict": { - "category": "conflict", - "recovery": "resolve_conflict", - "details": { - "required": ["request_id"], - "properties": { "request_id": { "type": "string" } } - } - }, - "no_pending_mutation": { "category": "conflict", "recovery": "refresh" }, - "not_authorized": { "category": "authorization", "recovery": "reauthorize" }, - "not_remote_authority": { "category": "compatibility", "recovery": "choose_collection" }, - "notification_criterion_not_declared": { "category": "validation", "recovery": "fix_request" }, - "notification_reauthorization_required": { "category": "authorization", "recovery": "reauthorize" }, - "notification_registration_failed": { "category": "availability", "recovery": "retry" }, - "notification_unregistration_failed": { "category": "availability", "recovery": "retry" }, - "notifications_not_declared": { "category": "compatibility", "recovery": "fix_request" }, - "notifications_unavailable": { "category": "availability", "recovery": "retry" }, - "operation_cancelled": { "category": "cancellation", "recovery": "none" }, - "operation_failed": { "category": "internal", "recovery": "contact_support" }, - "operation_invalid": { - "category": "validation", - "recovery": "fix_request", - "details": { - "required": ["diagnostics"], - "properties": { - "diagnostics": { "type": "array", "items": { "type": "object" } }, - "partial_result": {} - } - } - }, - "operation_outcome_unknown": { - "category": "conflict", - "recovery": "resolve_outcome", - "details": { - "required": ["request_id"], - "properties": { "request_id": { "type": "string" } } - } - }, - "path_occupied": { "category": "conflict", "recovery": "resolve_conflict" }, - "pending_mutation_unresolved": { "category": "conflict", "recovery": "resolve_outcome" }, - "query_snapshot_changed": { "category": "conflict", "recovery": "refresh" }, - "rate_limited": { - "category": "availability", - "recovery": "retry", - "details": { - "required": [], - "properties": { - "retry_after_ms": { "type": "integer" } - } - } - }, - "reconnect_required": { "category": "authorization", "recovery": "reauthorize" }, - "redirect_uri_required": { "category": "validation", "recovery": "fix_request" }, - "reference_updates_unsupported": { "category": "compatibility", "recovery": "fix_request" }, - "registry_backup_invalid": { "category": "integrity", "recovery": "contact_support" }, - "registry_busy": { "category": "availability", "recovery": "retry" }, - "registry_corrupt": { "category": "integrity", "recovery": "repair_collection" }, - "registry_migration_failed": { "category": "internal", "recovery": "contact_support" }, - "registry_schema_incompatible": { "category": "compatibility", "recovery": "upgrade_connector" }, - "relay_authorization_expired": { "category": "authorization", "recovery": "reauthorize" }, - "relay_unavailable": { "category": "availability", "recovery": "retry" }, - "sandbox_unsupported": { "category": "compatibility", "recovery": "fix_request" }, - "scope_denied": { "category": "authorization", "recovery": "reauthorize" }, - "session_destroyed": { "category": "cancellation", "recovery": "none" }, - "session_not_started": { "category": "validation", "recovery": "fix_request" }, - "session_starting": { "category": "availability", "recovery": "retry" }, - "stale_file_revision": { "category": "conflict", "recovery": "refresh" }, - "storage_required": { "category": "compatibility", "recovery": "none" }, - "sync_failed": { "category": "availability", "recovery": "retry" }, - "temporarily_unavailable": { "category": "availability", "recovery": "retry" }, - "timeout": { "category": "availability", "recovery": "retry" }, - "token_exchange_failed": { "category": "availability", "recovery": "retry" }, - "transport_protocol_incompatible": { - "category": "compatibility", - "recovery": "upgrade_connector", - "details": { - "required": ["contract", "required", "supported", "peer"], - "properties": { - "contract": { "type": "string" }, - "required": { "type": "array", "items": { "type": "integer" } }, - "supported": { "type": "array", "items": { "type": "integer" } }, - "peer": { "type": "string" }, - "operation": { "type": "string" } - } - } - }, - "type_pack_provision_failed": { "category": "validation", "recovery": "repair_collection" }, - "unknown_collection": { "category": "selection", "recovery": "choose_collection" }, - "unsafe_file_path": { "category": "validation", "recovery": "fix_request" }, - "unsupported_encryption": { "category": "compatibility", "recovery": "upgrade_application" }, - "unsupported_operation": { "category": "compatibility", "recovery": "fix_request" } - } -} diff --git a/public/connect/schemas/connect-protocol.v1.schema.json b/public/connect/schemas/connect-protocol.v1.schema.json deleted file mode 100644 index 4659ad1..0000000 --- a/public/connect/schemas/connect-protocol.v1.schema.json +++ /dev/null @@ -1,900 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/connect/schemas/connect-protocol.v1.json", - "title": "mdbase connect protocol 1", - "description": "Canonical wire shapes shared by applications, the control plane, and connectors.", - "oneOf": [ - { "$ref": "#/$defs/relayHello" }, - { "$ref": "#/$defs/relayWelcome" }, - { "$ref": "#/$defs/relayIncompatible" }, - { "$ref": "#/$defs/relayOperationRequest" }, - { "$ref": "#/$defs/relayOperationResponse" }, - { "$ref": "#/$defs/relayPolicySnapshot" }, - { "$ref": "#/$defs/relayPolicyApplied" }, - { "$ref": "#/$defs/authorizationOfferRequest" }, - { "$ref": "#/$defs/authorizationOfferResponse" }, - { "$ref": "#/$defs/authorizationActivationRequest" }, - { "$ref": "#/$defs/authorizationActivationResponse" } - ], - "$defs": { - "uuid": { - "type": "string", - "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$" - }, - "operation": { - "enum": ["describe", "changes", "read", "query", "list_views", "execute_view", "read_view_source", "create_view_source", "update_view_source", "delete_view_source", "validate", "create", "update", "delete", "rename", "read_type", "create_type", "update_type", "assess_type_pack", "apply_type_pack", "assess_collection_setup", "apply_collection_setup", "list_timers", "put_timer", "cancel_timer", "reconcile_timers", "sync"] - }, - "connectContractRequirements": { - "type": "object", - "additionalProperties": false, - "required": ["operation_transport", "authorization_binding", "semantic_capabilities"], - "properties": { - "operation_transport": { "type": "integer", "minimum": 1 }, - "authorization_binding": { "type": "integer", "minimum": 1 }, - "semantic_capabilities": { "type": "integer", "minimum": 1 }, - "durable_mutation": { "type": "integer", "minimum": 1 } - } - }, - "connectContractSupport": { - "type": "object", - "additionalProperties": false, - "required": ["operation_transport", "authorization_binding", "semantic_capabilities", "durable_mutation"], - "properties": { - "operation_transport": { "$ref": "#/$defs/versionSet" }, - "authorization_binding": { "$ref": "#/$defs/versionSet" }, - "semantic_capabilities": { "$ref": "#/$defs/versionSet" }, - "durable_mutation": { "$ref": "#/$defs/versionSet" } - } - }, - "versionSet": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { "type": "integer", "minimum": 1 } - }, - "contractRequirement": { - "type": "object", - "additionalProperties": false, - "required": ["id", "version", "digest"], - "properties": { - "id": { "type": "string", "minLength": 1, "maxLength": 100, "pattern": "^[a-z0-9]+(?:[._-][a-z0-9]+)*$" }, - "version": { "$ref": "#/$defs/semanticVersion" }, - "digest": { "$ref": "#/$defs/digest" } - } - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "grantScope": { - "type": "object", - "additionalProperties": false, - "required": ["access", "contracts"], - "properties": { - "access": { "enum": ["contract", "full_collection"] }, - "contracts": { - "type": "array", - "maxItems": 20, - "items": { "$ref": "#/$defs/collectionContract" } - } - } - }, - "diagnostic": { - "type": "object", - "additionalProperties": false, - "required": ["severity", "code", "message"], - "properties": { - "severity": { "enum": ["error", "warning", "info"] }, - "code": { "type": "string", "minLength": 1 }, - "message": { "type": "string" }, - "path": { "type": "string" }, - "field": { "type": "string" }, - "type": { "type": "string" }, - "schema_location": { "type": "string" }, - "details": true - } - }, - "operationEnvelope": { - "type": "object", - "additionalProperties": false, - "required": ["valid", "result", "diagnostics"], - "properties": { - "valid": { "type": "boolean" }, - "result": true, - "diagnostics": { "type": "array", "items": { "$ref": "#/$defs/diagnostic" } } - } - }, - "relayHello": { - "type": "object", - "additionalProperties": false, - "required": ["type", "protocol_version", "connector_version", "capabilities", "contract_support"], - "properties": { - "type": { "const": "relay_hello" }, - "protocol_version": { "const": 1 }, - "connector_version": { "type": "string", "minLength": 1, "maxLength": 100 }, - "capabilities": { - "type": "array", - "uniqueItems": true, - "items": { "type": "string", "minLength": 1, "maxLength": 100 } - }, - "contract_support": { "$ref": "#/$defs/connectContractSupport" } - } - }, - "relayWelcome": { - "type": "object", - "additionalProperties": false, - "required": ["type", "protocol_version", "session_id", "capabilities", "contract_support"], - "properties": { - "type": { "const": "relay_welcome" }, - "protocol_version": { "const": 1 }, - "session_id": { "type": "string", "minLength": 1, "maxLength": 100 }, - "capabilities": { - "type": "array", - "uniqueItems": true, - "items": { "type": "string", "minLength": 1, "maxLength": 100 } - }, - "contract_support": { "$ref": "#/$defs/connectContractSupport" } - } - }, - "relayIncompatible": { - "type": "object", - "additionalProperties": false, - "required": ["type", "protocol_version", "code", "message", "minimum_connector_version", "update_url"], - "properties": { - "type": { "const": "relay_incompatible" }, - "protocol_version": { "const": 1 }, - "code": { "enum": ["connector_upgrade_required", "transport_protocol_incompatible", "authorization_binding_incompatible", "capability_contract_incompatible", "durable_mutation_unsupported"] }, - "message": { "type": "string", "minLength": 1 }, - "details": { - "type": "object", - "additionalProperties": false, - "required": ["contract", "required", "supported", "peer"], - "properties": { - "contract": { "enum": ["operation_transport", "authorization_binding", "semantic_capabilities", "durable_mutation"] }, - "required": { "$ref": "#/$defs/versionSet" }, - "supported": { "type": "array", "uniqueItems": true, "items": { "type": "integer", "minimum": 1 } }, - "peer": { "const": "connector" } - } - }, - "minimum_connector_version": { "type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z.-]+)?$" }, - "update_url": { "type": "string", "format": "uri", "pattern": "^https://" } - } - }, - "relayOperationRequest": { - "type": "object", - "additionalProperties": false, - "required": ["type", "protocol_version", "request_id", "grant_id", "collection_id", "application_id", "operation", "input"], - "properties": { - "type": { "const": "operation_request" }, - "protocol_version": { "const": 3 }, - "request_id": { "$ref": "#/$defs/uuid" }, - "grant_id": { "$ref": "#/$defs/uuid" }, - "collection_id": { "$ref": "#/$defs/uuid" }, - "application_id": { "$ref": "#/$defs/uuid" }, - "operation": { "$ref": "#/$defs/operation" }, - "input": true - } - }, - "operationHttpRequest": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "request_id", "input"], - "properties": { - "protocol_version": { "const": 3 }, - "request_id": { "$ref": "#/$defs/uuid" }, - "input": true - } - }, - "operationHttpResponse": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "request_id", "ok"], - "properties": { - "protocol_version": { "const": 3 }, - "request_id": { "$ref": "#/$defs/uuid" }, - "ok": { "type": "boolean" }, - "result": true, - "problem": { "$ref": "https://schemas.mdbase.dev/connect/problem/v1" } - }, - "allOf": [ - { - "if": { "properties": { "ok": { "const": true } }, "required": ["ok"] }, - "then": { - "required": ["result"], - "not": { "properties": { "problem": true }, "required": ["problem"] } - }, - "else": { - "required": ["problem"], - "not": { "properties": { "result": true }, "required": ["result"] } - } - } - ] - }, - "relayOperationResponse": { - "type": "object", - "additionalProperties": false, - "required": ["type", "protocol_version", "request_id", "ok"], - "properties": { - "type": { "const": "operation_response" }, - "protocol_version": { "const": 3 }, - "request_id": { "$ref": "#/$defs/uuid" }, - "ok": { "type": "boolean" }, - "result": true, - "problem": { "$ref": "https://schemas.mdbase.dev/connect/problem/v1" } - }, - "allOf": [ - { - "if": { "properties": { "ok": { "const": true } }, "required": ["ok"] }, - "then": { - "properties": { "result": true }, - "required": ["result"], - "not": { "properties": { "problem": true }, "required": ["problem"] } - }, - "else": { - "properties": { "problem": true }, - "required": ["problem"], - "not": { "properties": { "result": true }, "required": ["result"] } - } - } - ] - }, - "grantPolicy": { - "type": "object", - "additionalProperties": false, - "required": ["id", "application_id", "collection_id", "operations", "scope", "application_name", "application_distribution", "application_homepage", "application_origin", "collection_name", "created_at", "encryption", "application_authorization"], - "properties": { - "id": { "$ref": "#/$defs/uuid" }, - "application_id": { "$ref": "#/$defs/uuid" }, - "collection_id": { "$ref": "#/$defs/uuid" }, - "operations": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/operation" } }, - "scope": { "$ref": "#/$defs/grantScope" }, - "application_name": { "type": "string", "minLength": 1 }, - "application_distribution": { "enum": ["web", "portable"] }, - "application_homepage": { "type": "string" }, - "application_project_url": { "type": "string", "format": "uri" }, - "application_origin": { - "anyOf": [ - { "const": "null" }, - { "type": "string", "format": "uri" } - ] - }, - "application_icon": { "type": "string" }, - "collection_name": { "type": "string", "minLength": 1 }, - "notification_criteria": { - "type": "array", - "maxItems": 50, - "items": { "$ref": "#/$defs/notificationCriterion" } - }, - "created_at": { "type": "string", "format": "date-time" }, - "encryption": { "$ref": "#/$defs/grantEncryption" }, - "file_capability": { - "$ref": "https://mdbase.dev/connect/schemas/files.v1.json#/$defs/fileCapability" - }, - "application_declaration": {}, - "application_authorization": { "$ref": "#/$defs/applicationAuthorizationProof" } - } - }, - "applicationAuthorizationProof": { - "type": "object", - "additionalProperties": false, - "required": ["binding", "signature"], - "properties": { - "binding": { "$ref": "#/$defs/applicationAuthorizationBinding" }, - "signature": { "type": "string", "pattern": "^[A-Za-z0-9_-]{86}$" } - } - }, - "applicationAuthorizationBinding": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "authorization_id", "application_id", "application_declaration_id", "application_manifest_digest", "application_installation_id", "installation_signing_public_key", "grant_agreement_public_key", "grant_signing_public_key", "flow", "authorization_nonce", "issued_at", "expires_at", "code_challenge", "contracts", "requested_operations"], - "properties": { - "protocol_version": { "const": 4 }, - "authorization_id": { "$ref": "#/$defs/uuid" }, - "application_id": { "$ref": "#/$defs/uuid" }, - "application_declaration_id": { "type": "string", "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$" }, - "application_manifest_digest": { "type": "string", "pattern": "^[0-9a-f]{64}$" }, - "application_installation_id": { "$ref": "#/$defs/uuid" }, - "installation_signing_public_key": { "$ref": "#/$defs/p256PublicKey" }, - "grant_agreement_public_key": { "$ref": "#/$defs/p256PublicKey" }, - "grant_signing_public_key": { "$ref": "#/$defs/p256PublicKey" }, - "flow": { "enum": ["authorization_code", "device_code"] }, - "authorization_nonce": { "type": "string", "pattern": "^[A-Za-z0-9_-]{43}$" }, - "issued_at": { "type": "string", "format": "date-time" }, - "expires_at": { "type": "string", "format": "date-time" }, - "redirect_uri": { "type": "string", "format": "uri" }, - "state": { "type": "string", "maxLength": 500 }, - "code_challenge": { "type": "string", "pattern": "^[A-Za-z0-9_-]{43}$" }, - "contracts": { "$ref": "#/$defs/connectContractRequirements" }, - "requested_operations": { - "type": "array", - "uniqueItems": true, - "items": { "$ref": "#/$defs/operation" } - }, - "requested_files": { - "$ref": "https://mdbase.dev/connect/schemas/files.v1.json#/$defs/applicationFileRequirement" - }, - "collection_id": { "$ref": "#/$defs/uuid" } - } - }, - "p256PublicKey": { - "type": "string", - "pattern": "^[A-Za-z0-9_-]{87}$" - }, - "authorizationCollectionOffer": { - "type": "object", - "additionalProperties": false, - "required": ["collection_id", "display_name", "spec_version", "contracts"], - "properties": { - "collection_id": { "$ref": "#/$defs/uuid" }, - "display_name": { "type": "string", "minLength": 1, "maxLength": 200 }, - "spec_version": { "type": "string", "minLength": 1, "maxLength": 30 }, - "contracts": { - "type": "array", - "maxItems": 100, - "items": { "$ref": "#/$defs/collectionContract" } - }, - "types": { - "type": "array", - "maxItems": 100, - "items": { "$ref": "#/$defs/authorizationTypeCandidate" } - } - } - }, - "applicationRequirements": { - "type": "object", - "additionalProperties": false, - "required": ["contracts"], - "properties": { - "contracts": { - "type": "array", - "maxItems": 20, - "items": { "$ref": "#/$defs/contractRequirement" } - }, - "configuration": { - "type": "array", - "maxItems": 100, - "items": { "$ref": "#/$defs/configurationRequirement" } - }, - "access": { "enum": ["contract", "full_collection"] }, - "collection_kind": { "const": "hosted" }, - "files": { - "$ref": "https://mdbase.dev/connect/schemas/files.v1.json#/$defs/applicationFileRequirement" - } - } - }, - "typePackProvision": { - "type": "object", - "additionalProperties": false, - "required": ["manifest", "resources", "provides"], - "properties": { - "manifest": { "$ref": "#/$defs/typePackManifest" }, - "resources": { - "type": "array", - "minItems": 1, - "maxItems": 100, - "items": { "$ref": "#/$defs/typePackSourceResource" } - }, - "provides": { - "type": "array", - "maxItems": 20, - "items": { "$ref": "#/$defs/contractRequirement" } - } - } - }, - "typePackManifest": { - "type": "object", - "required": ["kind", "id", "version", "resources"], - "properties": { - "kind": { "const": "mdbase.type-pack" }, - "id": { "type": "string", "minLength": 3 }, - "version": { "$ref": "#/$defs/semanticVersion" }, - "name": { "type": "string", "minLength": 1 }, - "description": { "type": "string" }, - "resources": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#/$defs/typePackManifestResource" } - } - }, - "patternProperties": { "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": true }, - "additionalProperties": false - }, - "typePackManifestResource": { - "type": "object", - "additionalProperties": false, - "required": ["kind", "mode", "source", "target", "digest"], - "properties": { - "kind": { "enum": ["contract", "type", "schema"] }, - "mode": { "enum": ["managed", "seed"] }, - "upgrade_from": { - "oneOf": [ - { "$ref": "#/$defs/typePackUpgradeBaseline" }, - { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/typePackUpgradeBaseline" } } - ] - }, - "source": { "type": "string", "minLength": 1, "maxLength": 500 }, - "target": { "type": "string", "minLength": 1, "maxLength": 500 }, - "digest": { "$ref": "#/$defs/digest" } - } - }, - "typePackUpgradeBaseline": { - "type": "object", - "additionalProperties": false, - "required": ["digest", "document"], - "properties": { - "digest": { "$ref": "#/$defs/digest" }, - "document": { "type": "string", "maxLength": 262144 }, - "version": { "type": "integer", "minimum": 1 } - } - }, - "typePackSourceResource": { - "type": "object", - "additionalProperties": false, - "required": ["source", "document"], - "properties": { - "source": { "type": "string", "minLength": 1, "maxLength": 500 }, - "document": { "type": "string", "maxLength": 262144 } - } - }, - "applicationProvisions": { - "type": "object", - "additionalProperties": false, - "required": ["type_packs"], - "properties": { - "type_packs": { - "type": "array", - "maxItems": 100, - "items": { "$ref": "#/$defs/typePackProvision" } - }, - "configuration": { - "type": "array", - "maxItems": 100, - "items": { "$ref": "#/$defs/configurationProvision" } - } - } - }, - "configurationRequirement": { - "type": "object", - "additionalProperties": false, - "required": ["id", "path", "predicate", "value"], - "properties": { - "id": { "type": "string", "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$" }, - "path": { "type": "string", "pattern": "^(?:/settings/record_extensions|/x-[^/]+(?:/.*)?)$", "maxLength": 1024 }, - "predicate": { "const": "contains" }, - "value": { "oneOf": [ - { "type": "string" }, - { "type": "number" }, - { "type": "boolean" }, - { "type": "null" } - ] } - } - }, - "configurationProvision": { - "type": "object", - "additionalProperties": false, - "required": ["requirement", "operation", "path", "value"], - "properties": { - "requirement": { "type": "string", "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$" }, - "operation": { "const": "set_add" }, - "path": { "type": "string", "pattern": "^(?:/settings/record_extensions|/x-[^/]+(?:/.*)?)$", "maxLength": 1024 }, - "value": { "oneOf": [ - { "type": "string" }, - { "type": "number" }, - { "type": "boolean" }, - { "type": "null" } - ] } - } - }, - "authorizationOfferRequest": { - "type": "object", - "additionalProperties": false, - "required": ["type", "protocol_version", "request_id", "authorization_id"], - "properties": { - "type": { "const": "authorization_offer_request" }, - "protocol_version": { "const": 1 }, - "request_id": { "$ref": "#/$defs/uuid" }, - "authorization_id": { "$ref": "#/$defs/uuid" }, - "requirements": { "$ref": "#/$defs/applicationRequirements" }, - "provisions": { "$ref": "#/$defs/applicationProvisions" } - } - }, - "authorizationOfferResponse": { - "type": "object", - "additionalProperties": false, - "required": ["type", "protocol_version", "request_id", "paused", "collections"], - "properties": { - "type": { "const": "authorization_offer_response" }, - "protocol_version": { "const": 1 }, - "request_id": { "$ref": "#/$defs/uuid" }, - "paused": { "type": "boolean" }, - "collections": { - "type": "array", - "maxItems": 1000, - "items": { "$ref": "#/$defs/authorizationCollectionOffer" } - } - } - }, - "authorizationActivationRequest": { - "type": "object", - "additionalProperties": false, - "required": ["type", "protocol_version", "request_id", "authorization_id", "application_declaration_id", "application_manifest_digest", "collection_id", "requirements", "provisions", "contract_setups", "grant"], - "properties": { - "type": { "const": "authorization_activation_request" }, - "protocol_version": { "const": 1 }, - "request_id": { "$ref": "#/$defs/uuid" }, - "authorization_id": { "$ref": "#/$defs/uuid" }, - "application_declaration_id": { "type": "string", "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$" }, - "application_manifest_digest": { "type": "string", "pattern": "^[0-9a-f]{64}$" }, - "collection_id": { "$ref": "#/$defs/uuid" }, - "requirements": { "$ref": "#/$defs/applicationRequirements" }, - "provisions": { "$ref": "#/$defs/applicationProvisions" }, - "contract_setups": { - "type": "array", - "maxItems": 20, - "items": { "$ref": "#/$defs/contractSetupChoice" } - }, - "grant": { "$ref": "#/$defs/grantPolicy" } - } - }, - "authorizationActivationResponse": { - "type": "object", - "additionalProperties": false, - "required": ["type", "protocol_version", "request_id", "ok", "contracts", "contract_setups"], - "properties": { - "type": { "const": "authorization_activation_response" }, - "protocol_version": { "const": 1 }, - "request_id": { "$ref": "#/$defs/uuid" }, - "ok": { "type": "boolean" }, - "contracts": { - "type": "array", - "maxItems": 100, - "items": { "$ref": "#/$defs/collectionContract" } - }, - "contract_setups": { - "type": "array", - "maxItems": 20, - "items": { "$ref": "#/$defs/contractSetupChoice" } - }, - "setup_assessment": true, - "provision_receipt": true, - "error": { - "type": "object", - "additionalProperties": false, - "required": ["code", "message"], - "properties": { - "code": { "type": "string", "minLength": 1 }, - "message": { "type": "string", "minLength": 1 }, - "details": true - } - } - }, - "allOf": [ - { - "if": { "properties": { "ok": { "const": true } }, "required": ["ok"] }, - "then": { - "not": { "properties": { "error": true }, "required": ["error"] } - }, - "else": { - "required": ["error"] - } - } - ] - }, - "notificationCriterion": { - "type": "object", - "additionalProperties": false, - "required": ["id", "event", "presentation"], - "properties": { - "id": { "type": "string", "minLength": 1, "maxLength": 100, "pattern": "^[a-z0-9]+(?:[._-][a-z0-9]+)*$" }, - "event": { "$ref": "#/$defs/contractRequirement" }, - "if": { - "type": "object", - "additionalProperties": false, - "required": ["$expr"], - "properties": { "$expr": { "type": "string", "minLength": 1, "maxLength": 4096 } } - }, - "debounce": { "type": "string", "pattern": "^[0-9]+(ms|s|m|h|d)$" }, - "minimum_interval": { "type": "string", "pattern": "^[0-9]+(ms|s|m|h|d)$" }, - "presentation": { - "type": "object", - "additionalProperties": false, - "required": ["title"], - "properties": { - "title": { "type": "string", "minLength": 1, "maxLength": 80 }, - "body": { "type": "string", "maxLength": 160 }, - "tag": { "type": "string", "minLength": 1, "maxLength": 80 } - } - } - } - }, - "grantEncryption": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "suite", "key_id", "scope_epoch", "connector_id", "collection_id", "application_agreement_public_key", "connector_agreement_public_key"], - "properties": { - "protocol_version": { "const": 1 }, - "suite": { "const": "P256-HKDF-SHA256-AES256GCM" }, - "key_id": { "type": "string", "minLength": 1, "maxLength": 200 }, - "scope_epoch": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 }, - "connector_id": { "$ref": "#/$defs/uuid" }, - "collection_id": { "$ref": "#/$defs/uuid" }, - "application_agreement_public_key": { "type": "string", "minLength": 80, "maxLength": 200, "pattern": "^[A-Za-z0-9_-]+$" }, - "connector_agreement_public_key": { "type": "string", "minLength": 80, "maxLength": 200, "pattern": "^[A-Za-z0-9_-]+$" } - } - }, - "relayPolicySnapshot": { - "type": "object", - "additionalProperties": false, - "required": ["type", "protocol_version", "request_id", "revision", "grants"], - "oneOf": [ - { "required": ["connector_id", "sequence", "lease_issued_at_ms", "lease_expires_at_ms"] }, - { "not": { "anyOf": [ - { "required": ["connector_id"] }, - { "required": ["sequence"] }, - { "required": ["lease_issued_at_ms"] }, - { "required": ["lease_expires_at_ms"] } - ] } } - ], - "properties": { - "type": { "const": "policy_snapshot" }, - "protocol_version": { "const": 1 }, - "request_id": { "$ref": "#/$defs/uuid" }, - "revision": { "$ref": "#/$defs/digest" }, - "connector_id": { "$ref": "#/$defs/uuid" }, - "sequence": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 }, - "lease_issued_at_ms": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, - "lease_expires_at_ms": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 }, - "grants": { "type": "array", "items": { "$ref": "#/$defs/grantPolicy" } } - } - }, - "relayPolicyApplied": { - "type": "object", - "additionalProperties": false, - "required": ["type", "protocol_version", "request_id", "revision", "ok"], - "properties": { - "type": { "const": "policy_applied" }, - "protocol_version": { "const": 1 }, - "request_id": { "$ref": "#/$defs/uuid" }, - "revision": { "$ref": "#/$defs/digest" }, - "ok": { "type": "boolean" }, - "error": { - "type": "object", - "additionalProperties": false, - "required": ["code", "message"], - "properties": { - "code": { "type": "string", "minLength": 1 }, - "message": { "type": "string" }, - "details": true - } - } - }, - "allOf": [ - { - "if": { "properties": { "ok": { "const": true } }, "required": ["ok"] }, - "then": { "not": { "properties": { "error": true }, "required": ["error"] } }, - "else": { "required": ["error"] } - } - ] - }, - "collectionDescription": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "collection_id", "display_name", "spec_version", "operations", "change_cursor", "types", "contracts"], - "properties": { - "protocol_version": { "const": 1 }, - "collection_id": { "$ref": "#/$defs/uuid" }, - "display_name": { "type": "string", "minLength": 1 }, - "spec_version": { "type": "string", "minLength": 1 }, - "operations": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/operation" } }, - "authority_capabilities": { "type": "array", "items": { "type": "string" } }, - "change_cursor": { "type": "integer", "minimum": 0 }, - "types": { "type": "array", "items": { "$ref": "#/$defs/collectionType" } }, - "contracts": { "type": "array", "items": { "$ref": "#/$defs/collectionContract" } }, - "configuration": { "type": "object", "description": "Canonical portable collection settings. Extension and implementation-specific values are omitted." } - } - }, - "dataContractSelector": { - "type": "object", "additionalProperties": false, - "required": ["id", "version"], - "properties": { - "id": { "type": "string" }, "version": { "type": "string" }, "type": { "type": "string" } - } - }, - "readInput": { - "type": "object", "additionalProperties": false, - "properties": { - "path": { "type": "string", "minLength": 1 }, - "paths": { "type": "array", "minItems": 1, "maxItems": 100, "items": { "type": "string", "minLength": 1 } }, - "include_body": { "type": "boolean", "description": "Batch default true; point-read defaults unchanged." }, - "include_document": { "type": "boolean", "default": false }, - "contract": { "$ref": "#/$defs/dataContractSelector" } - }, - "oneOf": [{ "required": ["path"] }, { "required": ["paths"] }], - "allOf": [{ "if": { "required": ["contract"] }, "then": { "properties": { "include_document": { "const": false } } } }] - }, - "recordDocument": { - "type": "object", "additionalProperties": false, - "required": ["path", "revision", "types", "frontmatter", "effective_frontmatter", "file"], - "properties": { - "path": { "type": "string" }, "revision": { "type": "string" }, - "types": { "type": "array", "items": { "type": "string" } }, - "frontmatter": { "type": "object" }, "effective_frontmatter": { "type": "object" }, - "body": { "type": "string" }, "document": { "type": "string" }, - "file": { "type": "object" }, "contract": { "type": "object" } - } - }, - "readManyDocumentItem": { - "oneOf": [ - { - "type": "object", "additionalProperties": false, "required": ["path", "status", "record"], - "properties": { "path": { "type": "string" }, "status": { "const": "found" }, "record": { "$ref": "#/$defs/recordDocument" } } - }, - { - "type": "object", "additionalProperties": false, "required": ["path", "status"], - "properties": { "path": { "type": "string" }, "status": { "const": "missing" } } - }, - { - "type": "object", "additionalProperties": false, "required": ["path", "status", "error"], - "properties": { - "path": { "type": "string" }, "status": { "const": "error" }, - "error": { - "type": "object", "additionalProperties": false, "required": ["code", "message"], - "properties": { "code": { "type": "string" }, "message": { "type": "string" } } - } - } - } - ] - }, - "readManyDocumentsResult": { - "description": "Ordered items including duplicates. Serialized operation envelope maximum 8 MiB; overflow fails explicitly and asks callers to split, never truncates.", - "type": "object", "additionalProperties": false, "required": ["items"], - "properties": { "items": { "type": "array", "maxItems": 100, "items": { "$ref": "#/$defs/readManyDocumentItem" } } } - }, - "queryRecord": { - "type": "object", "additionalProperties": false, "required": ["path", "types", "file"], - "properties": { - "path": { "type": "string" }, "revision": { "type": "string" }, - "types": { "type": "array", "items": { "type": "string" } }, - "frontmatter": { "type": "object" }, "effective_frontmatter": { "type": "object" }, - "body": { "type": "string" }, "values": { "type": "object" }, - "file": { "type": "object" }, "contract": { "type": "object" } - } - }, - "queryMetadataRecord": { - "type": "object", "additionalProperties": false, "required": ["path", "types", "revision", "values"], - "properties": { - "path": { "type": "string" }, "revision": { "type": "string" }, - "types": { "type": "array", "items": { "type": "string" } }, - "values": { "type": "object" }, "contract": { "type": "object" } - } - }, - "queryMetadataResult": { - "type": "object", "additionalProperties": false, "required": ["output", "results"], - "properties": { - "output": { "const": "metadata" }, - "results": { "type": "array", "items": { "$ref": "#/$defs/queryMetadataRecord" } }, - "meta": { "type": "object" } - } - }, - "collectionType": { - "type": "object", - "additionalProperties": false, - "required": ["name", "schema", "extensions"], - "properties": { - "name": { "type": "string", "minLength": 1 }, - "version": { "type": "integer", "minimum": 1 }, - "description": { "type": "string" }, - "revision": { "$ref": "#/$defs/digest" }, - "path": { "type": "string", "minLength": 1, "description": "Collection-relative source path." }, - "definition": { "type": "object", "description": "Complete portable type frontmatter, including extension declarations." }, - "schema": { "type": "object" }, - "collection": { "type": "object" }, - "lifecycle": { "type": "object" }, - "extensions": { "type": "object" } - } - }, - "authorizationTypeCandidate": { - "type": "object", - "additionalProperties": false, - "required": ["name", "revision", "schema", "extensions"], - "properties": { - "name": { "type": "string", "minLength": 1, "maxLength": 100 }, - "version": { "type": "integer", "minimum": 1 }, - "description": { "type": "string" }, - "revision": { "$ref": "#/$defs/digest" }, - "schema": { "type": "object" }, - "extensions": { "type": "object", "maxProperties": 0 } - } - }, - "collectionContract": { - "type": "object", - "additionalProperties": false, - "required": ["contract_type", "id", "version", "digest", "schema", "implementations"], - "properties": { - "contract_type": { "const": "record" }, - "id": { "type": "string", "minLength": 1 }, - "version": { "$ref": "#/$defs/semanticVersion" }, - "digest": { "$ref": "#/$defs/digest" }, - "schema": { "type": "object" }, - "binding_schema": { "type": "object" }, - "implementations": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#/$defs/collectionContractImplementation" } - } - } - }, - "collectionContractImplementation": { - "type": "object", - "additionalProperties": false, - "required": ["type_name", "type_version", "digest", "fields"], - "properties": { - "type_name": { "type": "string", "minLength": 1 }, - "type_version": { "type": "integer", "minimum": 1 }, - "type_path": { "type": "string", "minLength": 1 }, - "digest": { "$ref": "#/$defs/digest" }, - "fields": { - "type": "object", - "additionalProperties": { "type": "string", "minLength": 1 } - }, - "binding": { "type": "object" } - } - }, - "contractSetupChoice": { - "oneOf": [ - { - "type": "object", - "additionalProperties": false, - "required": ["contract", "mode"], - "properties": { - "contract": { "$ref": "#/$defs/contractRequirement" }, - "mode": { "const": "starter" } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": ["contract", "mode", "type_name", "type_revision", "fields"], - "properties": { - "contract": { "$ref": "#/$defs/contractRequirement" }, - "mode": { "const": "existing" }, - "type_name": { "type": "string", "minLength": 1, "maxLength": 100 }, - "type_revision": { "$ref": "#/$defs/digest" }, - "fields": { - "type": "object", - "maxProperties": 100, - "additionalProperties": { "type": "string", "minLength": 1, "maxLength": 500 } - }, - "binding": { "type": "object" } - } - } - ] - }, - "changesPage": { - "type": "object", - "additionalProperties": false, - "required": ["events", "cursor", "has_more", "reset"], - "properties": { - "events": { "type": "array", "items": { "$ref": "#/$defs/change" } }, - "cursor": { "type": "integer", "minimum": 0 }, - "has_more": { "type": "boolean" }, - "reset": { "type": "boolean" } - } - }, - "change": { - "type": "object", - "additionalProperties": false, - "required": ["cursor", "type", "occurred_at", "payload"], - "properties": { - "cursor": { "type": "integer", "minimum": 1 }, - "type": { "type": "string", "minLength": 1 }, - "occurred_at": { "type": "string", "format": "date-time" }, - "payload": { "type": "object" } - } - } - } -} diff --git a/public/connect/schemas/data-contract.schema.json b/public/connect/schemas/data-contract.schema.json deleted file mode 100644 index d20a200..0000000 --- a/public/connect/schemas/data-contract.schema.json +++ /dev/null @@ -1,163 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/v0.3/data-contract.schema.json", - "title": "mdbase v0.3 contract frontmatter", - "type": "object", - "required": ["kind", "contract_type", "id", "version"], - "properties": { - "kind": { - "const": "mdbase.contract" - }, - "contract_type": { - "enum": ["record", "event", "action"] - }, - "id": { - "$ref": "#/$defs/contractId" - }, - "version": { - "$ref": "#/$defs/semanticVersion" - }, - "name": { - "type": "string", - "minLength": 1 - }, - "description": { - "type": "string" - }, - "record_schema": { - "$ref": "#/$defs/schemaWrapper" - }, - "binding_schema": { - "$ref": "#/$defs/schemaWrapper" - }, - "data_schema": { - "$ref": "#/$defs/schemaWrapper" - }, - "source_schema": { - "$ref": "#/$defs/schemaWrapper" - }, - "input_schema": { - "$ref": "#/$defs/schemaWrapper" - }, - "output_schema": { - "$ref": "#/$defs/schemaWrapper" - }, - "error_schema": { - "$ref": "#/$defs/schemaWrapper" - }, - "provider_schema": { - "$ref": "#/$defs/schemaWrapper" - }, - "behavior": { - "$ref": "#/$defs/actionBehavior" - } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": true - }, - "oneOf": [ - { - "properties": { - "contract_type": { "const": "record" }, - "record_schema": true, - "binding_schema": true, - "data_schema": false, - "source_schema": false, - "input_schema": false, - "output_schema": false, - "error_schema": false, - "provider_schema": false, - "behavior": false - }, - "required": ["record_schema"] - }, - { - "properties": { - "contract_type": { "const": "event" }, - "record_schema": false, - "binding_schema": false, - "data_schema": true, - "source_schema": true, - "input_schema": false, - "output_schema": false, - "error_schema": false, - "provider_schema": false, - "behavior": false - }, - "required": ["data_schema"] - }, - { - "properties": { - "contract_type": { "const": "action" }, - "record_schema": false, - "binding_schema": false, - "data_schema": false, - "source_schema": false, - "input_schema": true, - "output_schema": true, - "error_schema": true, - "provider_schema": true, - "behavior": true - }, - "required": ["input_schema"] - } - ], - "additionalProperties": false, - "$defs": { - "contractId": { - "type": "string", - "minLength": 3, - "maxLength": 128, - "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "schemaWrapper": { - "type": "object", - "required": ["dialect"], - "properties": { - "dialect": { - "const": "json-schema-2020-12" - }, - "value": { - "type": "object" - }, - "ref": { - "type": "string", - "minLength": 1 - } - }, - "oneOf": [ - { - "required": ["value"], - "properties": { - "value": true, - "ref": false - } - }, - { - "required": ["ref"], - "properties": { - "ref": true, - "value": false - } - } - ], - "additionalProperties": false - }, - "actionBehavior": { - "type": "object", - "properties": { - "idempotency": { - "enum": ["none", "optional", "required"] - }, - "cancellation": { - "enum": ["none", "cooperative"] - } - }, - "additionalProperties": false - } - } -} diff --git a/public/connect/schemas/encrypted-relay.v1.schema.json b/public/connect/schemas/encrypted-relay.v1.schema.json deleted file mode 100644 index c4234a9..0000000 --- a/public/connect/schemas/encrypted-relay.v1.schema.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/connect/schemas/encrypted-relay.v1.json", - "title": "mdbase connect encrypted relay protocol 1", - "description": "Opaque authenticated operation envelopes routed between an application and connector.", - "oneOf": [ - { "$ref": "#/$defs/request" }, - { "$ref": "#/$defs/response" }, - { "$ref": "#/$defs/rejected" } - ], - "$defs": { - "uuid": { - "type": "string", - "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$" - }, - "operation": { - "enum": ["describe", "changes", "read", "query", "list_views", "execute_view", "read_view_source", "create_view_source", "update_view_source", "delete_view_source", "validate", "create", "update", "delete", "rename", "read_type", "create_type", "update_type", "assess_type_pack", "apply_type_pack", "assess_collection_setup", "apply_collection_setup", "list_timers", "put_timer", "cancel_timer", "reconcile_timers", "file_control"] - }, - "envelope": { - "type": "object", - "additionalProperties": false, - "required": ["type", "protocol_version", "suite", "request_id", "grant_id", "application_id", "connector_id", "collection_id", "operation", "scope_epoch", "key_id", "counter", "ciphertext"], - "properties": { - "type": { "enum": ["encrypted_operation_request", "encrypted_operation_response"] }, - "protocol_version": { "const": 1 }, - "suite": { "const": "P256-HKDF-SHA256-AES256GCM" }, - "request_id": { "$ref": "#/$defs/uuid" }, - "grant_id": { "$ref": "#/$defs/uuid" }, - "application_id": { "$ref": "#/$defs/uuid" }, - "connector_id": { "$ref": "#/$defs/uuid" }, - "collection_id": { "$ref": "#/$defs/uuid" }, - "operation": { "$ref": "#/$defs/operation" }, - "scope_epoch": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 }, - "key_id": { "type": "string", "minLength": 1, "maxLength": 200 }, - "counter": { "type": "string", "pattern": "^[1-9][0-9]{0,19}$" }, - "ciphertext": { "type": "string", "minLength": 1, "maxLength": 2800000, "pattern": "^[A-Za-z0-9_-]+$" } - } - }, - "request": { - "allOf": [ - { "$ref": "#/$defs/envelope" }, - { "type": "object", "properties": { "type": { "const": "encrypted_operation_request" } } } - ] - }, - "response": { - "allOf": [ - { "$ref": "#/$defs/envelope" }, - { "type": "object", "properties": { "type": { "const": "encrypted_operation_response" } } } - ] - }, - "rejected": { - "type": "object", - "additionalProperties": false, - "required": ["type", "protocol_version", "request_id", "problem"], - "properties": { - "type": { "const": "encrypted_operation_rejected" }, - "protocol_version": { "const": 1 }, - "request_id": { "$ref": "#/$defs/uuid" }, - "problem": { "$ref": "https://schemas.mdbase.dev/connect/problem/v1" } - } - } - } -} diff --git a/public/connect/schemas/encrypted-relay.v2.schema.json b/public/connect/schemas/encrypted-relay.v2.schema.json deleted file mode 100644 index b09e43f..0000000 --- a/public/connect/schemas/encrypted-relay.v2.schema.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/connect/schemas/encrypted-relay.v2.json", - "title": "mdbase connect encrypted operation transport 2", - "description": "Opaque authenticated operation envelopes routed between an application and authority.", - "oneOf": [ - { "$ref": "#/$defs/request" }, - { "$ref": "#/$defs/response" }, - { "$ref": "#/$defs/rejected" } - ], - "$defs": { - "uuid": { - "type": "string", - "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$" - }, - "operation": { - "enum": ["describe", "changes", "read", "query", "list_views", "execute_view", "read_view_source", "create_view_source", "update_view_source", "delete_view_source", "validate", "create", "update", "delete", "rename", "read_type", "create_type", "update_type", "assess_type_pack", "apply_type_pack", "assess_collection_setup", "apply_collection_setup", "list_timers", "put_timer", "cancel_timer", "reconcile_timers", "sync", "file_control"] - }, - "envelope": { - "type": "object", - "additionalProperties": false, - "required": ["type", "protocol_version", "suite", "request_id", "grant_id", "application_id", "connector_id", "collection_id", "operation", "scope_epoch", "key_id", "counter", "ciphertext"], - "properties": { - "type": { "enum": ["encrypted_operation_request", "encrypted_operation_response"] }, - "protocol_version": { "const": 2 }, - "suite": { "const": "P256-HKDF-SHA256-AES256GCM" }, - "request_id": { "$ref": "#/$defs/uuid" }, - "grant_id": { "$ref": "#/$defs/uuid" }, - "application_id": { "$ref": "#/$defs/uuid" }, - "connector_id": { "$ref": "#/$defs/uuid" }, - "collection_id": { "$ref": "#/$defs/uuid" }, - "operation": { "$ref": "#/$defs/operation" }, - "scope_epoch": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 }, - "key_id": { "type": "string", "minLength": 1, "maxLength": 200 }, - "counter": { "type": "string", "pattern": "^[1-9][0-9]{0,19}$" }, - "ciphertext": { "type": "string", "minLength": 1, "maxLength": 2800000, "pattern": "^[A-Za-z0-9_-]+$" } - } - }, - "request": { - "allOf": [ - { "$ref": "#/$defs/envelope" }, - { "type": "object", "properties": { "type": { "const": "encrypted_operation_request" } } } - ] - }, - "response": { - "allOf": [ - { "$ref": "#/$defs/envelope" }, - { "type": "object", "properties": { "type": { "const": "encrypted_operation_response" } } } - ] - }, - "rejected": { - "type": "object", - "additionalProperties": false, - "required": ["type", "protocol_version", "request_id", "problem"], - "properties": { - "type": { "const": "encrypted_operation_rejected" }, - "protocol_version": { "const": 2 }, - "request_id": { "$ref": "#/$defs/uuid" }, - "problem": { "$ref": "https://schemas.mdbase.dev/connect/problem/v1" } - } - } - } -} diff --git a/public/connect/schemas/encrypted-relay.v3.schema.json b/public/connect/schemas/encrypted-relay.v3.schema.json deleted file mode 100644 index 477b102..0000000 --- a/public/connect/schemas/encrypted-relay.v3.schema.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/connect/schemas/encrypted-relay.v3.json", - "title": "mdbase connect encrypted operation transport 3", - "description": "Opaque authenticated operation envelopes routed between an application and authority.", - "oneOf": [ - { "$ref": "#/$defs/request" }, - { "$ref": "#/$defs/response" }, - { "$ref": "#/$defs/rejected" } - ], - "$defs": { - "uuid": { - "type": "string", - "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$" - }, - "operation": { - "enum": ["describe", "changes", "read", "query", "list_views", "execute_view", "read_view_source", "create_view_source", "update_view_source", "delete_view_source", "validate", "create", "update", "delete", "rename", "read_type", "create_type", "update_type", "assess_type_pack", "apply_type_pack", "assess_collection_setup", "apply_collection_setup", "list_timers", "put_timer", "cancel_timer", "reconcile_timers", "sync", "file_control"] - }, - "envelope": { - "type": "object", - "additionalProperties": false, - "required": ["type", "protocol_version", "suite", "request_id", "grant_id", "application_id", "connector_id", "collection_id", "operation", "scope_epoch", "key_id", "counter", "ciphertext"], - "properties": { - "type": { "enum": ["encrypted_operation_request", "encrypted_operation_response"] }, - "protocol_version": { "const": 3 }, - "suite": { "const": "P256-HKDF-SHA256-AES256GCM" }, - "request_id": { "$ref": "#/$defs/uuid" }, - "grant_id": { "$ref": "#/$defs/uuid" }, - "application_id": { "$ref": "#/$defs/uuid" }, - "connector_id": { "$ref": "#/$defs/uuid" }, - "collection_id": { "$ref": "#/$defs/uuid" }, - "operation": { "$ref": "#/$defs/operation" }, - "scope_epoch": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 }, - "key_id": { "type": "string", "minLength": 1, "maxLength": 200 }, - "counter": { "type": "string", "pattern": "^[1-9][0-9]{0,19}$" }, - "deadline_unix_ms": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 }, - "ciphertext": { "type": "string", "minLength": 1, "maxLength": 2800000, "pattern": "^[A-Za-z0-9_-]+$" } - } - }, - "request": { - "allOf": [ - { "$ref": "#/$defs/envelope" }, - { "type": "object", "properties": { "type": { "const": "encrypted_operation_request" } } } - ] - }, - "response": { - "allOf": [ - { "$ref": "#/$defs/envelope" }, - { "type": "object", "properties": { "type": { "const": "encrypted_operation_response" } } } - ] - }, - "rejected": { - "type": "object", - "additionalProperties": false, - "required": ["type", "protocol_version", "request_id", "problem"], - "properties": { - "type": { "const": "encrypted_operation_rejected" }, - "protocol_version": { "const": 3 }, - "request_id": { "$ref": "#/$defs/uuid" }, - "problem": { "$ref": "https://schemas.mdbase.dev/connect/problem/v1" } - } - } - } -} diff --git a/public/connect/schemas/files.v1.schema.json b/public/connect/schemas/files.v1.schema.json deleted file mode 100644 index 29c9e26..0000000 --- a/public/connect/schemas/files.v1.schema.json +++ /dev/null @@ -1,551 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/connect/schemas/files.v1.json", - "title": "mdbase connect collection file protocol 1", - "oneOf": [ - { "$ref": "#/$defs/applicationFileRequirement" }, - { "$ref": "#/$defs/selectiveSyncPolicy" }, - { "$ref": "#/$defs/fileCapability" }, - { "$ref": "#/$defs/fileDescriptor" }, - { "$ref": "#/$defs/listFilesRequest" }, - { "$ref": "#/$defs/listFilesPage" }, - { "$ref": "#/$defs/statFileRequest" }, - { "$ref": "#/$defs/fileStat" }, - { "$ref": "#/$defs/openUploadRequest" }, - { "$ref": "#/$defs/openDownloadRequest" }, - { "$ref": "#/$defs/moveFileRequest" }, - { "$ref": "#/$defs/moveFileReceipt" }, - { "$ref": "#/$defs/deleteFileRequest" }, - { "$ref": "#/$defs/deleteFileReceipt" }, - { "$ref": "#/$defs/transferSession" }, - { "$ref": "#/$defs/transferStatus" }, - { "$ref": "#/$defs/prepareUploadPartRequest" }, - { "$ref": "#/$defs/preparedPart" }, - { "$ref": "#/$defs/commitUploadRequest" }, - { "$ref": "#/$defs/commitUploadReceipt" }, - { "$ref": "#/$defs/abortTransferRequest" }, - { "$ref": "#/$defs/getTransferStatusRequest" } - ], - "$defs": { - "uuid": { "type": "string", "format": "uuid" }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "path": { - "type": "string", - "minLength": 1, - "maxLength": 1024, - "pattern": "^(?!/)(?!\\.)(?!.*//)(?!.*\\\\)(?!.*/\\.)(?!(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*\\/(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*/$).+$" - }, - "mediaClass": { - "enum": ["image", "audio", "video", "pdf", "other"] - }, - "selectiveSyncPolicy": { - "type": "object", - "additionalProperties": false, - "required": ["file_classes", "excluded_folders"], - "properties": { - "file_classes": { - "type": "array", - "maxItems": 5, - "uniqueItems": true, - "items": { "$ref": "#/$defs/mediaClass" } - }, - "excluded_folders": { - "type": "array", - "maxItems": 100, - "uniqueItems": true, - "items": { "$ref": "#/$defs/path" } - } - } - }, - "fileDescriptor": { - "type": "object", - "additionalProperties": false, - "required": [ - "file_id", - "path", - "revision", - "content_digest", - "size", - "media_class", - "modified_at" - ], - "properties": { - "file_id": { "$ref": "#/$defs/uuid" }, - "path": { "$ref": "#/$defs/path" }, - "revision": { "type": "string", "minLength": 1, "maxLength": 255 }, - "content_digest": { "$ref": "#/$defs/digest" }, - "size": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, - "media_type": { "type": "string", "minLength": 1, "maxLength": 255 }, - "media_class": { "$ref": "#/$defs/mediaClass" }, - "modified_at": { "type": "string", "format": "date-time" } - } - }, - "fileAction": { - "enum": ["list", "read", "add", "replace", "move", "delete"] - }, - "fileScope": { - "oneOf": [ - { - "type": "object", - "additionalProperties": false, - "required": ["kind", "folders"], - "properties": { - "kind": { "const": "selected_folders" }, - "folders": { - "type": "array", - "minItems": 1, - "maxItems": 100, - "uniqueItems": true, - "items": { "$ref": "#/$defs/path" } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": ["kind"], - "properties": { "kind": { "const": "collection" } } - } - ] - }, - "applicationFileRequirement": { - "type": "object", - "additionalProperties": false, - "required": ["actions", "scope"], - "properties": { - "actions": { - "type": "array", - "minItems": 1, - "maxItems": 6, - "uniqueItems": true, - "items": { "$ref": "#/$defs/fileAction" } - }, - "scope": { "$ref": "#/$defs/fileScope" } - } - }, - "fileCapability": { - "type": "object", - "additionalProperties": false, - "required": ["kind", "protocol_version", "actions", "scope"], - "properties": { - "kind": { "const": "files" }, - "protocol_version": { "const": 1 }, - "actions": { - "type": "array", - "minItems": 1, - "maxItems": 6, - "uniqueItems": true, - "items": { "$ref": "#/$defs/fileAction" } - }, - "scope": { "$ref": "#/$defs/fileScope" } - } - }, - "listFilesRequest": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "type"], - "properties": { - "protocol_version": { "const": 1 }, - "type": { "const": "list_files" }, - "folder": { "$ref": "#/$defs/path" }, - "after": { "type": "string", "minLength": 1 }, - "limit": { "type": "integer", "minimum": 1, "maximum": 1000 } - } - }, - "listFilesPage": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "type", "files"], - "properties": { - "protocol_version": { "const": 1 }, - "type": { "const": "files_page" }, - "files": { "type": "array", "items": { "$ref": "#/$defs/fileDescriptor" } }, - "next": { "type": "string", "minLength": 1 }, - "authority_capabilities": { "type": "array", "items": { "type": "string" } } - } - }, - "statFileRequest": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "type"], - "properties": { - "protocol_version": { "const": 1 }, - "type": { "const": "stat_file" }, - "path": { "$ref": "#/$defs/path" }, - "file_id": { "$ref": "#/$defs/uuid" } - }, - "oneOf": [{ "required": ["path"] }, { "required": ["file_id"] }] - }, - "fileStat": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "type", "file"], - "properties": { - "protocol_version": { "const": 1 }, - "type": { "const": "file_stat" }, - "file": { "oneOf": [{ "$ref": "#/$defs/fileDescriptor" }, { "type": "null" }] } - } - }, - "openUploadRequest": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "type", "transfer_id", "path", "size", "content_digest"], - "properties": { - "protocol_version": { "const": 1 }, - "type": { "const": "open_file_upload" }, - "transfer_id": { "$ref": "#/$defs/uuid" }, - "path": { "$ref": "#/$defs/path" }, - "size": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, - "content_digest": { "$ref": "#/$defs/digest" }, - "media_type": { "type": "string", "minLength": 1, "maxLength": 255 }, - "if_revision": { "type": "string", "minLength": 1, "maxLength": 255 } - } - }, - "openDownloadRequest": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "type", "transfer_id", "file_id"], - "properties": { - "protocol_version": { "const": 1 }, - "type": { "const": "open_file_download" }, - "transfer_id": { "$ref": "#/$defs/uuid" }, - "file_id": { "$ref": "#/$defs/uuid" }, - "revision": { "type": "string", "minLength": 1, "maxLength": 255 } - } - }, - "moveFileRequest": { - "type": "object", - "additionalProperties": false, - "required": [ - "protocol_version", "type", "mutation_id", "file_id", "if_revision", "from_path", "path", "update_references" - ], - "properties": { - "protocol_version": { "const": 1 }, - "type": { "const": "move_file" }, - "mutation_id": { "$ref": "#/$defs/uuid" }, - "file_id": { "$ref": "#/$defs/uuid" }, - "if_revision": { "type": "string", "minLength": 1, "maxLength": 255 }, - "from_path": { "$ref": "#/$defs/path" }, - "path": { "$ref": "#/$defs/path" }, - "update_references": { "type": "boolean" } - } - }, - "moveFileReceipt": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "type", "mutation_id", "file"], - "properties": { - "protocol_version": { "const": 1 }, - "type": { "const": "file_moved" }, - "mutation_id": { "$ref": "#/$defs/uuid" }, - "file": { "$ref": "#/$defs/fileDescriptor" } - } - }, - "deleteFileRequest": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "type", "mutation_id", "file_id", "if_revision", "path"], - "properties": { - "protocol_version": { "const": 1 }, - "type": { "const": "delete_file" }, - "mutation_id": { "$ref": "#/$defs/uuid" }, - "file_id": { "$ref": "#/$defs/uuid" }, - "if_revision": { "type": "string", "minLength": 1, "maxLength": 255 }, - "path": { "$ref": "#/$defs/path" } - } - }, - "deleteFileReceipt": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "type", "mutation_id", "file_id", "previous_path", "revision"], - "properties": { - "protocol_version": { "const": 1 }, - "type": { "const": "file_deleted" }, - "mutation_id": { "$ref": "#/$defs/uuid" }, - "file_id": { "$ref": "#/$defs/uuid" }, - "previous_path": { "$ref": "#/$defs/path" }, - "revision": { "type": "string", "minLength": 1, "maxLength": 255 } - } - }, - "transferProtection": { - "enum": ["grant_aead_v1", "transport_tls"] - }, - "transferStrategy": { - "oneOf": [ - { - "type": "object", - "additionalProperties": false, - "required": ["kind"], - "properties": { "kind": { "const": "object_put" } } - }, - { - "type": "object", - "additionalProperties": false, - "required": ["kind", "chunk_size"], - "properties": { - "kind": { "const": "framed_chunks" }, - "chunk_size": { "type": "integer", "minimum": 65536, "maximum": 4194304 } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": ["kind", "part_size"], - "properties": { - "kind": { "const": "object_multipart" }, - "part_size": { "type": "integer", "minimum": 5242880, "maximum": 5368709120 } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": ["kind", "part_size"], - "properties": { - "kind": { "const": "object_ranges" }, - "part_size": { "type": "integer", "minimum": 65536, "maximum": 5368709120 } - } - } - ] - }, - "transferSession": { - "type": "object", - "additionalProperties": false, - "required": [ - "protocol_version", - "type", - "transfer_id", - "direction", - "protection", - "strategy", - "total_size", - "expires_at", - "received" - ], - "properties": { - "protocol_version": { "const": 1 }, - "type": { "const": "file_transfer" }, - "transfer_id": { "$ref": "#/$defs/uuid" }, - "direction": { "enum": ["upload", "download"] }, - "protection": { "$ref": "#/$defs/transferProtection" }, - "strategy": { "$ref": "#/$defs/transferStrategy" }, - "total_size": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, - "expires_at": { "type": "string", "format": "date-time" }, - "received": { - "type": "array", - "uniqueItems": true, - "items": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 } - }, - "uploaded_parts": { - "type": "array", - "maxItems": 10000, - "items": { "$ref": "#/$defs/uploadedPart" } - }, - "prepared_upload_part": { "$ref": "#/$defs/preparedPart" } - }, - "allOf": [{ - "if": { "required": ["prepared_upload_part"] }, - "then": { "properties": { - "direction": { "const": "upload" }, - "protection": { "const": "transport_tls" }, - "strategy": { "type": "object", "properties": { "kind": { "const": "object_put" } } }, - "prepared_upload_part": { "type": "object", "properties": { - "part_index": { "const": 0 }, - "offset": { "const": 0 }, - "method": { "const": "PUT" }, - "headers": { - "type": "object", - "required": ["if-none-match"], - "properties": { "if-none-match": { "const": "*" } } - } - } } - } } - }] - }, - "transferStatus": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "type", "transfer_id", "state", "received", "received_bytes", "uploaded_parts"], - "properties": { - "protocol_version": { "const": 1 }, - "type": { "const": "file_transfer_status" }, - "transfer_id": { "$ref": "#/$defs/uuid" }, - "state": { "enum": ["open", "committed", "aborted", "expired"] }, - "received": { - "type": "array", - "uniqueItems": true, - "items": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 } - }, - "received_bytes": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, - "uploaded_parts": { - "type": "array", - "maxItems": 10000, - "items": { "$ref": "#/$defs/uploadedPart" } - } - } - }, - "prepareUploadPartRequest": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "type", "transfer_id", "part_number", "content_length"], - "properties": { - "protocol_version": { "const": 1 }, - "type": { "const": "prepare_file_upload_part" }, - "transfer_id": { "$ref": "#/$defs/uuid" }, - "part_number": { "type": "integer", "minimum": 1, "maximum": 10000 }, - "content_length": { "type": "integer", "minimum": 0, "maximum": 5368709120 } - } - }, - "preparedPart": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "type", "transfer_id", "part_index", "offset", "content_length", "method", "url", "headers", "expires_at"], - "properties": { - "protocol_version": { "const": 1 }, - "type": { "const": "file_part" }, - "transfer_id": { "$ref": "#/$defs/uuid" }, - "part_index": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, - "offset": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, - "content_length": { "type": "integer", "minimum": 0, "maximum": 5368709120 }, - "method": { "const": "PUT" }, - "url": { "type": "string", "format": "uri", "pattern": "^https://" }, - "headers": { - "type": "object", - "additionalProperties": { "type": "string" } - }, - "expires_at": { "type": "string", "format": "date-time" } - } - }, - "uploadedPart": { - "type": "object", - "additionalProperties": false, - "required": ["part_number", "etag"], - "properties": { - "part_number": { "type": "integer", "minimum": 1, "maximum": 10000 }, - "etag": { "type": "string", "minLength": 1, "maxLength": 255 } - } - }, - "commitUploadRequest": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "type", "transfer_id"], - "properties": { - "protocol_version": { "const": 1 }, - "type": { "const": "commit_file_upload" }, - "transfer_id": { "$ref": "#/$defs/uuid" }, - "parts": { - "type": "array", - "minItems": 1, - "maxItems": 10000, - "items": { "$ref": "#/$defs/uploadedPart" } - } - } - }, - "commitUploadReceipt": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "type", "transfer_id", "file"], - "properties": { - "protocol_version": { "const": 1 }, - "type": { "const": "file_upload_committed" }, - "transfer_id": { "$ref": "#/$defs/uuid" }, - "file": { "$ref": "#/$defs/fileDescriptor" } - } - }, - "abortTransferRequest": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "type", "transfer_id"], - "properties": { - "protocol_version": { "const": 1 }, - "type": { "const": "abort_file_transfer" }, - "transfer_id": { "$ref": "#/$defs/uuid" } - } - }, - "relayFileHeader": { - "type": "object", - "additionalProperties": false, - "required": [ - "protocol_version", - "type", - "request_id", - "grant_id", - "transfer_id", - "chunk_index" - ], - "properties": { - "protocol_version": { "const": 1 }, - "type": { - "enum": [ - "upload_chunk", - "upload_acknowledged", - "download_request", - "download_chunk", - "rejected" - ] - }, - "request_id": { "$ref": "#/$defs/uuid" }, - "grant_id": { "$ref": "#/$defs/uuid" }, - "transfer_id": { "$ref": "#/$defs/uuid" }, - "chunk_index": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - } - } - }, - "frameHeader": { - "type": "object", - "additionalProperties": false, - "required": [ - "protocol_version", - "protection", - "grant_id", - "authority_id", - "collection_id", - "transfer_id", - "direction", - "chunk_size", - "chunk_index", - "offset", - "plaintext_length", - "total_size", - "scope_epoch" - ], - "properties": { - "protocol_version": { "const": 1 }, - "protection": { "$ref": "#/$defs/transferProtection" }, - "grant_id": { "$ref": "#/$defs/uuid" }, - "authority_id": { "$ref": "#/$defs/uuid" }, - "collection_id": { "$ref": "#/$defs/uuid" }, - "transfer_id": { "$ref": "#/$defs/uuid" }, - "direction": { "enum": ["upload", "download"] }, - "chunk_size": { "type": "integer", "minimum": 65536, "maximum": 4194304 }, - "chunk_index": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, - "offset": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, - "plaintext_length": { "type": "integer", "minimum": 0, "maximum": 4194304 }, - "total_size": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, - "scope_epoch": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 }, - "key_id": { "type": "string", "minLength": 1, "maxLength": 255 } - }, - "allOf": [ - { - "if": { "properties": { "protection": { "const": "grant_aead_v1" } } }, - "then": { "required": ["key_id"] } - } - ] - }, - "getTransferStatusRequest": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "type", "transfer_id"], - "properties": { - "protocol_version": { "const": 1 }, - "type": { "const": "get_file_transfer_status" }, - "transfer_id": { "$ref": "#/$defs/uuid" } - } - } - } -} diff --git a/public/connect/schemas/interop/v0.1/action-cancellation.schema.json b/public/connect/schemas/interop/v0.1/action-cancellation.schema.json deleted file mode 100644 index d195904..0000000 --- a/public/connect/schemas/interop/v0.1/action-cancellation.schema.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/interop/v0.1/action-cancellation.schema.json", - "title": "mdbase action cancellation request", - "$ref": "profile.schema.json#/$defs/actionCancellation" -} diff --git a/public/connect/schemas/interop/v0.1/action-invocation.schema.json b/public/connect/schemas/interop/v0.1/action-invocation.schema.json deleted file mode 100644 index 748c3b5..0000000 --- a/public/connect/schemas/interop/v0.1/action-invocation.schema.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/interop/v0.1/action-invocation.schema.json", - "title": "mdbase admitted action invocation", - "$ref": "profile.schema.json#/$defs/actionInvocation" -} diff --git a/public/connect/schemas/interop/v0.1/action-outcome.schema.json b/public/connect/schemas/interop/v0.1/action-outcome.schema.json deleted file mode 100644 index 6c8248d..0000000 --- a/public/connect/schemas/interop/v0.1/action-outcome.schema.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/interop/v0.1/action-outcome.schema.json", - "title": "mdbase action outcome", - "$ref": "profile.schema.json#/$defs/actionOutcome" -} diff --git a/public/connect/schemas/interop/v0.1/action-provider-declaration.schema.json b/public/connect/schemas/interop/v0.1/action-provider-declaration.schema.json deleted file mode 100644 index 19beaf5..0000000 --- a/public/connect/schemas/interop/v0.1/action-provider-declaration.schema.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/interop/v0.1/action-provider-declaration.schema.json", - "title": "mdbase action-provider declaration", - "$ref": "profile.schema.json#/$defs/actionProviderDeclaration" -} diff --git a/public/connect/schemas/interop/v0.1/action-request.schema.json b/public/connect/schemas/interop/v0.1/action-request.schema.json deleted file mode 100644 index 28a95e9..0000000 --- a/public/connect/schemas/interop/v0.1/action-request.schema.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/interop/v0.1/action-request.schema.json", - "title": "mdbase action request", - "$ref": "profile.schema.json#/$defs/actionRequest" -} diff --git a/public/connect/schemas/interop/v0.1/conformance-claim.schema.json b/public/connect/schemas/interop/v0.1/conformance-claim.schema.json deleted file mode 100644 index 7625af1..0000000 --- a/public/connect/schemas/interop/v0.1/conformance-claim.schema.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/interop/v0.1/conformance-claim.schema.json", - "title": "mdbase interoperability conformance claim", - "$ref": "profile.schema.json#/$defs/conformanceClaim" -} diff --git a/public/connect/schemas/interop/v0.1/event-source-declaration.schema.json b/public/connect/schemas/interop/v0.1/event-source-declaration.schema.json deleted file mode 100644 index 4f11f93..0000000 --- a/public/connect/schemas/interop/v0.1/event-source-declaration.schema.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/interop/v0.1/event-source-declaration.schema.json", - "title": "mdbase event-source declaration", - "$ref": "profile.schema.json#/$defs/eventSourceDeclaration" -} diff --git a/public/connect/schemas/interop/v0.1/event.schema.json b/public/connect/schemas/interop/v0.1/event.schema.json deleted file mode 100644 index e66cd0e..0000000 --- a/public/connect/schemas/interop/v0.1/event.schema.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/interop/v0.1/event.schema.json", - "title": "mdbase CloudEvents event envelope", - "$ref": "profile.schema.json#/$defs/event" -} diff --git a/public/connect/schemas/interop/v0.1/profile.schema.json b/public/connect/schemas/interop/v0.1/profile.schema.json deleted file mode 100644 index 4ba0146..0000000 --- a/public/connect/schemas/interop/v0.1/profile.schema.json +++ /dev/null @@ -1,456 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/interop/v0.1/profile.schema.json", - "title": "mdbase event and action interoperability profile 0.1", - "oneOf": [ - { "$ref": "#/$defs/event" }, - { "$ref": "#/$defs/actionRequest" }, - { "$ref": "#/$defs/actionInvocation" }, - { "$ref": "#/$defs/actionOutcome" }, - { "$ref": "#/$defs/actionCancellation" }, - { "$ref": "#/$defs/eventSourceDeclaration" }, - { "$ref": "#/$defs/actionProviderDeclaration" }, - { "$ref": "#/$defs/conformanceClaim" } - ], - "$defs": { - "contractId": { - "type": "string", - "minLength": 3, - "maxLength": 128, - "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "semanticVersionRequirement": { - "type": "string", - "minLength": 1, - "maxLength": 128 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "portableId": { - "type": "string", - "minLength": 1, - "maxLength": 256, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@/-]*$" - }, - "exactContract": { - "type": "object", - "required": ["id", "version", "digest"], - "properties": { - "id": { "$ref": "#/$defs/contractId" }, - "version": { "$ref": "#/$defs/semanticVersion" }, - "digest": { "$ref": "#/$defs/digest" } - }, - "additionalProperties": false - }, - "contractRequirement": { - "type": "object", - "required": ["id", "version"], - "properties": { - "id": { "$ref": "#/$defs/contractId" }, - "version": { "$ref": "#/$defs/semanticVersionRequirement" }, - "digest": { "$ref": "#/$defs/digest" } - }, - "additionalProperties": false - }, - "implementationIdentity": { - "type": "object", - "required": ["application", "implementation", "version"], - "properties": { - "application": { "$ref": "#/$defs/portableId" }, - "implementation": { "$ref": "#/$defs/portableId" }, - "version": { "$ref": "#/$defs/semanticVersion" }, - "instance_id": { "$ref": "#/$defs/portableId" } - }, - "additionalProperties": false - }, - "transportCapabilities": { - "type": "object", - "required": ["delivery", "ordering", "cancellation", "deadlines"], - "properties": { - "delivery": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "enum": ["ephemeral", "at_least_once", "durable_cursor", "offline_queue"] - } - }, - "ordering": { - "type": "array", - "uniqueItems": true, - "items": { - "enum": ["none", "source", "subject"] - } - }, - "cancellation": { "type": "boolean" }, - "deadlines": { "type": "boolean" }, - "provider_discovery": { "type": "boolean" }, - "max_payload_bytes": { "type": "integer", "minimum": 1 }, - "outcome_retention_seconds": { "type": "integer", "minimum": 0 }, - "request_deduplication": { "type": "boolean" }, - "cross_process_identity": { "type": "boolean" } - }, - "additionalProperties": false - }, - "extensionValue": { - "oneOf": [ - { "type": "null" }, - { "type": "boolean" }, - { "type": "integer" }, - { "type": "number" }, - { "type": "string" } - ] - }, - "event": { - "title": "mdbase CloudEvents event envelope", - "type": "object", - "required": [ - "specversion", - "id", - "source", - "type", - "time", - "datacontenttype", - "dataschema", - "data", - "mdbaseprofile", - "mdbasecontractversion", - "mdbasecontractdigest", - "mdbaseapplication", - "mdbaseimplementation", - "mdbaseimplementationversion" - ], - "properties": { - "specversion": { "const": "1.0" }, - "id": { "$ref": "#/$defs/portableId" }, - "source": { "type": "string", "format": "uri-reference", "minLength": 1 }, - "type": { "$ref": "#/$defs/contractId" }, - "time": { "type": "string", "format": "date-time" }, - "subject": { "type": "string", "format": "uri-reference", "minLength": 1 }, - "datacontenttype": { "const": "application/json" }, - "dataschema": { "type": "string", "format": "uri", "minLength": 1 }, - "data": true, - "mdbaseprofile": { "const": "0.1" }, - "mdbasecontractversion": { "$ref": "#/$defs/semanticVersion" }, - "mdbasecontractdigest": { "$ref": "#/$defs/digest" }, - "mdbaseapplication": { "$ref": "#/$defs/portableId" }, - "mdbaseimplementation": { "$ref": "#/$defs/portableId" }, - "mdbaseimplementationversion": { "$ref": "#/$defs/semanticVersion" }, - "mdbaseinstanceid": { "$ref": "#/$defs/portableId" }, - "correlationid": { "$ref": "#/$defs/portableId" }, - "causationid": { "$ref": "#/$defs/portableId" } - }, - "propertyNames": { "pattern": "^[a-z0-9]+$" }, - "additionalProperties": { "$ref": "#/$defs/extensionValue" } - }, - "actionRequest": { - "title": "mdbase action request", - "type": "object", - "required": [ - "kind", - "profile_version", - "request_id", - "contract", - "caller", - "created_at", - "input" - ], - "properties": { - "kind": { "const": "mdbase.action.request" }, - "profile_version": { "const": "0.1" }, - "request_id": { "$ref": "#/$defs/portableId" }, - "contract": { "$ref": "#/$defs/contractRequirement" }, - "caller": { "$ref": "#/$defs/implementationIdentity" }, - "created_at": { "type": "string", "format": "date-time" }, - "correlation_id": { "$ref": "#/$defs/portableId" }, - "causation_id": { "$ref": "#/$defs/portableId" }, - "subject": { "type": "string", "format": "uri-reference", "minLength": 1 }, - "idempotency_key": { "type": "string", "minLength": 1, "maxLength": 512 }, - "deadline": { "type": "string", "format": "date-time" }, - "requested_provider": { - "type": "object", - "properties": { - "application": { "$ref": "#/$defs/portableId" }, - "implementation": { "$ref": "#/$defs/portableId" }, - "instance_id": { "$ref": "#/$defs/portableId" } - }, - "minProperties": 1, - "additionalProperties": false - }, - "authorization_context": { - "type": "string", - "format": "uri-reference", - "minLength": 1 - }, - "input": true - }, - "additionalProperties": false - }, - "actionInvocation": { - "title": "mdbase admitted action invocation", - "type": "object", - "required": [ - "kind", - "profile_version", - "invocation_id", - "attempt_id", - "request_id", - "contract", - "caller", - "provider", - "provider_declaration_digest", - "handler_id", - "admitted_at", - "input" - ], - "properties": { - "kind": { "const": "mdbase.action.invocation" }, - "profile_version": { "const": "0.1" }, - "invocation_id": { "$ref": "#/$defs/portableId" }, - "attempt_id": { "$ref": "#/$defs/portableId" }, - "request_id": { "$ref": "#/$defs/portableId" }, - "contract": { "$ref": "#/$defs/exactContract" }, - "caller": { "$ref": "#/$defs/implementationIdentity" }, - "provider": { "$ref": "#/$defs/implementationIdentity" }, - "provider_declaration_digest": { "$ref": "#/$defs/digest" }, - "handler_id": { "$ref": "#/$defs/portableId" }, - "admitted_at": { "type": "string", "format": "date-time" }, - "correlation_id": { "$ref": "#/$defs/portableId" }, - "causation_id": { "$ref": "#/$defs/portableId" }, - "subject": { "type": "string", "format": "uri-reference", "minLength": 1 }, - "idempotency_key": { "type": "string", "minLength": 1, "maxLength": 512 }, - "deadline": { "type": "string", "format": "date-time" }, - "authorization_context": { - "type": "string", - "format": "uri-reference", - "minLength": 1 - }, - "input": true - }, - "additionalProperties": false - }, - "portableError": { - "type": "object", - "required": ["code", "message"], - "properties": { - "code": { - "enum": [ - "unknown_contract", - "unsupported_contract_version", - "contract_digest_conflict", - "invalid_event_data", - "invalid_action_input", - "invalid_action_output", - "no_provider", - "ambiguous_provider", - "requested_provider_unavailable", - "unauthorized", - "capability_denied", - "request_rejected", - "deadline_exceeded", - "cancellation_unsupported", - "cancelled", - "handler_failure", - "outcome_indeterminate", - "transport_unavailable", - "unsupported_transport_capability" - ] - }, - "message": { "type": "string", "minLength": 1 }, - "details": true, - "retryable": { "type": "boolean" } - }, - "additionalProperties": false - }, - "actionOutcome": { - "title": "mdbase action outcome", - "type": "object", - "required": [ - "kind", - "profile_version", - "outcome_id", - "request_id", - "invocation_id", - "attempt_id", - "contract", - "provider", - "provider_declaration_digest", - "status", - "completed_at" - ], - "properties": { - "kind": { "const": "mdbase.action.outcome" }, - "profile_version": { "const": "0.1" }, - "outcome_id": { "$ref": "#/$defs/portableId" }, - "request_id": { "$ref": "#/$defs/portableId" }, - "invocation_id": { "$ref": "#/$defs/portableId" }, - "attempt_id": { "$ref": "#/$defs/portableId" }, - "contract": { "$ref": "#/$defs/exactContract" }, - "provider": { "$ref": "#/$defs/implementationIdentity" }, - "provider_declaration_digest": { "$ref": "#/$defs/digest" }, - "status": { - "enum": ["succeeded", "rejected", "failed", "cancelled", "outcome_indeterminate"] - }, - "completed_at": { "type": "string", "format": "date-time" }, - "output": true, - "error": { "$ref": "#/$defs/portableError" } - }, - "allOf": [ - { - "if": { - "properties": { "status": { "const": "succeeded" } }, - "required": ["status"] - }, - "then": { - "required": ["output"], - "not": { "required": ["error"] } - }, - "else": { - "required": ["error"], - "not": { "required": ["output"] } - } - } - ], - "additionalProperties": false - }, - "actionCancellation": { - "title": "mdbase action cancellation request", - "type": "object", - "required": ["kind", "profile_version", "cancellation_id", "request_id", "caller", "requested_at"], - "properties": { - "kind": { "const": "mdbase.action.cancel" }, - "profile_version": { "const": "0.1" }, - "cancellation_id": { "$ref": "#/$defs/portableId" }, - "request_id": { "$ref": "#/$defs/portableId" }, - "caller": { "$ref": "#/$defs/implementationIdentity" }, - "requested_at": { "type": "string", "format": "date-time" }, - "reason": { "type": "string", "maxLength": 1024 } - }, - "additionalProperties": false - }, - "eventSourceDeclaration": { - "title": "mdbase event-source declaration", - "type": "object", - "required": [ - "kind", - "profile_version", - "declaration_id", - "declaration_digest", - "source", - "contracts" - ], - "properties": { - "kind": { "const": "mdbase.event-source" }, - "profile_version": { "const": "0.1" }, - "declaration_id": { "$ref": "#/$defs/portableId" }, - "declaration_digest": { "$ref": "#/$defs/digest" }, - "source": { "$ref": "#/$defs/implementationIdentity" }, - "contracts": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": ["requirement", "resolved"], - "properties": { - "requirement": { "$ref": "#/$defs/contractRequirement" }, - "resolved": { "$ref": "#/$defs/exactContract" }, - "binding": true, - "ordering": { - "type": "array", - "uniqueItems": true, - "items": { "enum": ["none", "source", "subject"] } - } - }, - "additionalProperties": false - } - } - }, - "additionalProperties": false - }, - "actionProviderDeclaration": { - "title": "mdbase action-provider declaration", - "type": "object", - "required": [ - "kind", - "profile_version", - "declaration_id", - "declaration_digest", - "provider", - "handlers" - ], - "properties": { - "kind": { "const": "mdbase.action-provider" }, - "profile_version": { "const": "0.1" }, - "declaration_id": { "$ref": "#/$defs/portableId" }, - "declaration_digest": { "$ref": "#/$defs/digest" }, - "provider": { "$ref": "#/$defs/implementationIdentity" }, - "handlers": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": ["handler_id", "requirement", "resolved"], - "properties": { - "handler_id": { "$ref": "#/$defs/portableId" }, - "requirement": { "$ref": "#/$defs/contractRequirement" }, - "resolved": { "$ref": "#/$defs/exactContract" }, - "binding": true, - "idempotency": { - "type": "object", - "required": ["mode"], - "properties": { - "mode": { "enum": ["none", "request"] }, - "retention_seconds": { "type": "integer", "minimum": 1 } - }, - "additionalProperties": false - }, - "cancellation": { "enum": ["none", "cooperative"] }, - "max_concurrency": { "type": "integer", "minimum": 1 } - }, - "additionalProperties": false - } - } - }, - "additionalProperties": false - }, - "conformanceClaim": { - "title": "mdbase interoperability conformance claim", - "type": "object", - "required": ["kind", "profile_version", "implementation", "roles", "transport"], - "properties": { - "kind": { "const": "mdbase.interop.conformance" }, - "profile_version": { "const": "0.1" }, - "implementation": { "$ref": "#/$defs/implementationIdentity" }, - "roles": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "enum": ["event_source", "event_consumer", "action_caller", "action_provider", "bridge"] - } - }, - "transport": { "$ref": "#/$defs/transportCapabilities" }, - "evidence": { - "type": "array", - "items": { - "type": "object", - "required": ["scenario", "result"], - "properties": { - "scenario": { "type": "string", "minLength": 1 }, - "result": { "const": "pass" }, - "uri": { "type": "string", "format": "uri-reference" } - }, - "additionalProperties": false - } - } - }, - "additionalProperties": false - } - } -} diff --git a/public/connect/schemas/mdbase-app.legacy-v1.schema.json b/public/connect/schemas/mdbase-app.legacy-v1.schema.json deleted file mode 100644 index a119c28..0000000 --- a/public/connect/schemas/mdbase-app.legacy-v1.schema.json +++ /dev/null @@ -1,405 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/connect/schemas/mdbase-app.legacy-v1.json", - "title": "mdbase connect bundled application manifest v1", - "type": "object", - "additionalProperties": false, - "required": ["manifest_version", "id", "name"], - "properties": { - "manifest_version": { "const": 1 }, - "distribution": { - "enum": ["web", "portable"], - "description": "Portable declarations use device authorization and do not claim a browser origin." - }, - "id": { - "type": "string", - "minLength": 5, - "maxLength": 150, - "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*){2,}$", - "description": "Stable reverse-domain application identifier. This is presentation metadata, not publisher authentication." - }, - "name": { "type": "string", "minLength": 1, "maxLength": 100 }, - "homepage": { "type": "string", "format": "uri", "pattern": "^https://" }, - "project_url": { "type": "string", "format": "uri", "pattern": "^https://" }, - "icon": { "type": "string", "format": "uri", "pattern": "^https://" }, - "redirect_uris": { - "type": "array", - "minItems": 1, - "maxItems": 10, - "uniqueItems": true, - "items": { - "type": "string", - "format": "uri", - "description": "An HTTPS URI on the homepage origin or a private-use scheme derived from the application ID." - } - }, - "requirements": { "$ref": "#/$defs/requirements" }, - "provisions": { - "type": "object", - "additionalProperties": false, - "required": ["type_packs"], - "properties": { - "configuration": { - "type": "array", - "maxItems": 50, - "items": { "$ref": "#/$defs/configurationProvision" } - }, - "type_packs": { - "type": "array", - "maxItems": 20, - "items": { "$ref": "#/$defs/typePackProvision" } - } - } - }, - "notifications": { - "type": "object", - "additionalProperties": false, - "required": ["criteria"], - "properties": { - "criteria": { - "type": "array", - "maxItems": 50, - "items": { "$ref": "#/$defs/notificationCriterion" } - }, - "native_delivery": { "$ref": "#/$defs/nativeNotificationDelivery" } - } - } - }, - "oneOf": [ - { - "required": ["homepage", "redirect_uris"], - "properties": { - "distribution": { "const": "web" }, - "homepage": true, - "redirect_uris": true, - "project_url": false - } - }, - { - "required": ["distribution"], - "properties": { - "distribution": { "const": "portable" }, - "homepage": false, - "redirect_uris": false - } - } - ], - "$defs": { - "identifier": { - "type": "string", - "minLength": 1, - "maxLength": 100, - "pattern": "^[a-z0-9]+(?:[._-][a-z0-9]+)*$" - }, - "duration": { - "type": "string", - "pattern": "^[0-9]+(ms|s|m|h|d)$" - }, - "contract": { - "type": "object", - "additionalProperties": false, - "required": ["id", "version", "digest"], - "properties": { - "id": { "$ref": "#/$defs/identifier" }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" } - } - }, - "requirements": { - "type": "object", - "additionalProperties": false, - "required": ["access", "contracts"], - "properties": { - "capabilities": { "$ref": "#/$defs/capabilityRequirements" }, - "access": { - "const": "full_collection", - "description": "Compatibility declaration for collection-level application authorization." - }, - "collection_kind": { - "const": "hosted", - "description": "Require a durable provider-backed collection with direct sync support." - }, - "files": { "$ref": "#/$defs/fileRequirement" }, - "configuration": { - "type": "array", - "maxItems": 50, - "items": { "$ref": "#/$defs/configurationRequirement" } - }, - "contracts": { - "type": "array", - "maxItems": 20, - "uniqueItems": true, - "items": { "$ref": "#/$defs/contract" } - } - } - }, - "capabilityRequirements": { - "type": "object", - "additionalProperties": false, - "required": ["contract_version", "required"], - "properties": { - "contract_version": { "const": 1 }, - "required": { - "type": "array", - "maxItems": 32, - "uniqueItems": true, - "items": { "$ref": "#/$defs/applicationCapability" } - }, - "optional": { - "type": "array", - "maxItems": 32, - "uniqueItems": true, - "items": { "$ref": "#/$defs/applicationCapability" } - } - } - }, - "configurationValue": { - "anyOf": [ - { "type": "string" }, - { "type": "number" }, - { "type": "boolean" }, - { "type": "null" } - ] - }, - "configurationRequirement": { - "type": "object", - "additionalProperties": false, - "required": ["id", "path", "predicate", "value"], - "properties": { - "id": { - "type": "string", - "minLength": 1, - "maxLength": 100, - "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$" - }, - "path": { "type": "string", "minLength": 1, "maxLength": 1024 }, - "predicate": { "const": "contains" }, - "value": { "$ref": "#/$defs/configurationValue" } - } - }, - "configurationProvision": { - "type": "object", - "additionalProperties": false, - "required": ["requirement", "operation", "path", "value"], - "properties": { - "requirement": { - "type": "string", - "minLength": 1, - "maxLength": 100, - "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$" - }, - "operation": { "const": "set_add" }, - "path": { "type": "string", "minLength": 1, "maxLength": 1024 }, - "value": { "$ref": "#/$defs/configurationValue" } - } - }, - "applicationCapability": { - "enum": [ - "collection.inspect", - "records.watch", - "records.read", - "records.query", - "records.validate", - "records.create", - "records.update", - "records.delete", - "records.rename", - "views.list", - "views.execute", - "views.source.read", - "views.source.create", - "views.source.update", - "views.source.delete", - "definitions.contracts.current", - "definitions.read", - "definitions.create", - "definitions.update", - "definitions.type-pack.inspect", - "definitions.type-pack.apply", - "collection.setup.apply", - "timers.list", - "timers.put", - "timers.cancel", - "timers.reconcile", - "sync.offline-replica", - "notifications.background-delivery", - "files.list", - "files.read", - "files.add", - "files.replace", - "files.move", - "files.delete" - ] - }, - "fileRequirement": { - "type": "object", - "additionalProperties": false, - "required": ["actions", "scope"], - "properties": { - "actions": { - "type": "array", - "minItems": 1, - "maxItems": 6, - "uniqueItems": true, - "items": { - "enum": ["list", "read", "add", "replace", "move", "delete"] - } - }, - "scope": { "$ref": "#/$defs/fileScope" } - } - }, - "fileScope": { - "oneOf": [ - { - "type": "object", - "additionalProperties": false, - "required": ["kind", "folders"], - "properties": { - "kind": { "const": "selected_folders" }, - "folders": { - "type": "array", - "minItems": 1, - "maxItems": 100, - "uniqueItems": true, - "items": { - "type": "string", - "minLength": 1, - "maxLength": 1024, - "pattern": "^(?!/)(?!\\.)(?!.*//)(?!.*\\\\)(?!.*/\\.)(?!(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*\\/(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*/$).+$" - } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": ["kind"], - "properties": { "kind": { "const": "collection" } } - } - ] - }, - "typePackProvision": { - "type": "object", - "additionalProperties": false, - "required": ["manifest", "resources", "provides"], - "properties": { - "manifest": { "$ref": "#/$defs/typePackManifest" }, - "resources": { - "type": "array", - "minItems": 1, - "maxItems": 100, - "items": { "$ref": "#/$defs/typePackSourceResource" } - }, - "provides": { - "type": "array", - "maxItems": 20, - "uniqueItems": true, - "items": { "$ref": "#/$defs/contract" } - } - } - }, - "typePackManifest": { - "type": "object", - "required": ["kind", "id", "version", "resources"], - "properties": { - "kind": { "const": "mdbase.type-pack" }, - "id": { "$ref": "#/$defs/identifier" }, - "version": { "$ref": "#/$defs/contract/properties/version" }, - "name": { "type": "string", "minLength": 1, "maxLength": 100 }, - "description": { "type": "string", "maxLength": 500 }, - "resources": { - "type": "array", - "minItems": 1, - "maxItems": 100, - "items": { "$ref": "#/$defs/typePackManifestResource" } - } - }, - "patternProperties": { "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": true }, - "additionalProperties": false - }, - "typePackManifestResource": { - "type": "object", - "additionalProperties": false, - "required": ["kind", "mode", "source", "target", "digest"], - "properties": { - "kind": { "enum": ["contract", "type", "schema"] }, - "mode": { "enum": ["managed", "seed"] }, - "source": { "type": "string", "minLength": 1, "maxLength": 240 }, - "target": { "type": "string", "minLength": 1, "maxLength": 240 }, - "digest": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" } - } - }, - "typePackSourceResource": { - "type": "object", - "additionalProperties": false, - "required": ["source", "document"], - "properties": { - "source": { "type": "string", "minLength": 1, "maxLength": 240 }, - "document": { "type": "string", "maxLength": 262144 } - } - }, - "notificationCriterion": { - "type": "object", - "additionalProperties": false, - "required": ["id", "event", "presentation"], - "properties": { - "id": { "$ref": "#/$defs/identifier" }, - "event": { "$ref": "#/$defs/contract" }, - "if": { - "type": "object", - "additionalProperties": false, - "required": ["$expr"], - "properties": { - "$expr": { "type": "string", "minLength": 1, "maxLength": 4096 } - } - }, - "debounce": { "$ref": "#/$defs/duration" }, - "minimum_interval": { "$ref": "#/$defs/duration" }, - "presentation": { - "type": "object", - "additionalProperties": false, - "required": ["title"], - "properties": { - "title": { "type": "string", "minLength": 1, "maxLength": 80 }, - "body": { "type": "string", "maxLength": 160 }, - "tag": { "type": "string", "minLength": 1, "maxLength": 80 } - } - } - } - }, - "nativeNotificationDelivery": { - "oneOf": [ - { - "type": "object", - "additionalProperties": false, - "required": ["mode", "firebase_project_id"], - "properties": { - "mode": { "const": "managed_fcm" }, - "firebase_project_id": { - "type": "string", - "minLength": 6, - "maxLength": 63, - "pattern": "^[a-z][a-z0-9-]*[a-z0-9]$" - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": ["mode", "url"], - "properties": { - "mode": { "const": "webhook" }, - "url": { - "type": "string", - "format": "uri", - "pattern": "^https://" - } - } - } - ] - } - } -} diff --git a/public/connect/schemas/mdbase-app.schema.json b/public/connect/schemas/mdbase-app.schema.json deleted file mode 100644 index 8b40da6..0000000 --- a/public/connect/schemas/mdbase-app.schema.json +++ /dev/null @@ -1,412 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/connect/schemas/mdbase-app.v1.json", - "title": "mdbase connect bundled application manifest v1", - "type": "object", - "additionalProperties": false, - "required": ["manifest_version", "id", "name"], - "properties": { - "manifest_version": { "const": 1 }, - "distribution": { - "enum": ["web", "portable"], - "description": "Portable declarations use device authorization and do not claim a browser origin." - }, - "id": { - "type": "string", - "minLength": 5, - "maxLength": 150, - "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*){2,}$", - "description": "Stable reverse-domain application identifier. This is presentation metadata, not publisher authentication." - }, - "name": { "type": "string", "minLength": 1, "maxLength": 100 }, - "homepage": { "type": "string", "format": "uri", "pattern": "^https://" }, - "project_url": { "type": "string", "format": "uri", "pattern": "^https://" }, - "icon": { "type": "string", "format": "uri", "pattern": "^https://" }, - "redirect_uris": { - "type": "array", - "minItems": 1, - "maxItems": 10, - "uniqueItems": true, - "items": { - "type": "string", - "format": "uri", - "description": "An HTTPS URI on the homepage origin or a private-use scheme derived from the application ID." - } - }, - "requirements": { "$ref": "#/$defs/requirements" }, - "provisions": { - "type": "object", - "additionalProperties": false, - "required": ["type_packs"], - "properties": { - "configuration": { - "type": "array", - "maxItems": 50, - "items": { "$ref": "#/$defs/configurationProvision" } - }, - "type_packs": { - "type": "array", - "maxItems": 20, - "items": { "$ref": "#/$defs/typePackProvision" } - } - } - }, - "notifications": { - "type": "object", - "additionalProperties": false, - "required": ["criteria"], - "properties": { - "criteria": { - "type": "array", - "maxItems": 50, - "items": { "$ref": "#/$defs/notificationCriterion" } - }, - "native_delivery": { "$ref": "#/$defs/nativeNotificationDelivery" } - } - } - }, - "oneOf": [ - { - "required": ["homepage", "redirect_uris"], - "properties": { - "distribution": { "const": "web" }, - "homepage": true, - "redirect_uris": true, - "project_url": false - } - }, - { - "required": ["distribution"], - "properties": { - "distribution": { "const": "portable" }, - "homepage": false, - "redirect_uris": false - } - } - ], - "$defs": { - "identifier": { - "type": "string", - "minLength": 1, - "maxLength": 100, - "pattern": "^[a-z0-9]+(?:[._-][a-z0-9]+)*$" - }, - "duration": { - "type": "string", - "pattern": "^[0-9]+(ms|s|m|h|d)$" - }, - "contract": { - "type": "object", - "additionalProperties": false, - "required": ["id", "version", "digest"], - "properties": { - "id": { "$ref": "#/$defs/identifier" }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" } - } - }, - "requirements": { - "type": "object", - "additionalProperties": false, - "required": ["access", "contracts"], - "properties": { - "capabilities": { "$ref": "#/$defs/capabilityRequirements" }, - "access": { - "const": "full_collection", - "description": "Compatibility declaration for collection-level application authorization." - }, - "collection_kind": { - "const": "hosted", - "description": "Require a durable provider-backed collection with direct sync support." - }, - "people": { - "type": "object", - "additionalProperties": false, - "required": ["version"], - "anyOf": [{ "required": ["required"] }, { "required": ["optional"] }], - "properties": { - "version": { "const": 1 }, - "required": { "$ref": "#/$defs/peoplePermissions" }, - "optional": { "$ref": "#/$defs/peoplePermissions" } - } - }, - "files": { "$ref": "#/$defs/fileRequirement" }, - "configuration": { - "type": "array", - "maxItems": 50, - "items": { "$ref": "#/$defs/configurationRequirement" } - }, - "contracts": { - "type": "array", - "maxItems": 20, - "uniqueItems": true, - "items": { "$ref": "#/$defs/contract" } - } - } - }, - "capabilityRequirements": { - "type": "object", - "additionalProperties": false, - "required": ["contract_version", "required"], - "properties": { - "contract_version": { "const": 2 }, - "required": { - "type": "array", - "maxItems": 32, - "uniqueItems": true, - "items": { "$ref": "#/$defs/applicationCapability" } - }, - "optional": { - "type": "array", - "maxItems": 32, - "uniqueItems": true, - "items": { "$ref": "#/$defs/applicationCapability" } - } - } - }, - "configurationValue": { - "anyOf": [ - { "type": "string" }, - { "type": "number" }, - { "type": "boolean" }, - { "type": "null" } - ] - }, - "configurationRequirement": { - "type": "object", - "additionalProperties": false, - "required": ["id", "path", "predicate", "value"], - "properties": { - "id": { - "type": "string", - "minLength": 1, - "maxLength": 100, - "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$" - }, - "path": { "type": "string", "minLength": 1, "maxLength": 1024 }, - "predicate": { "const": "contains" }, - "value": { "$ref": "#/$defs/configurationValue" } - } - }, - "configurationProvision": { - "type": "object", - "additionalProperties": false, - "required": ["requirement", "operation", "path", "value"], - "properties": { - "requirement": { - "type": "string", - "minLength": 1, - "maxLength": 100, - "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$" - }, - "operation": { "const": "set_add" }, - "path": { "type": "string", "minLength": 1, "maxLength": 1024 }, - "value": { "$ref": "#/$defs/configurationValue" } - } - }, - "applicationCapability": { - "enum": [ - "collection.read", - "records.create", - "records.edit", - "records.delete", - "views.manage", - "definitions.manage", - "background.schedule", - "offline.replica" - ] - }, - "peoplePermissions": { - "type": "array", "minItems": 1, "uniqueItems": true, - "items": { "enum": ["identity", "members"] } - }, - "fileRequirement": { - "type": "object", - "additionalProperties": false, - "required": ["required", "scope"], - "properties": { - "required": { "$ref": "#/$defs/fileActions" }, - "optional": { "$ref": "#/$defs/fileActions" }, - "scope": { "$ref": "#/$defs/fileScope" } - } - }, - "fileActions": { - "type": "array", - "minItems": 1, - "maxItems": 6, - "uniqueItems": true, - "items": { - "enum": ["list", "read", "add", "replace", "move", "delete"] - } - }, - "fileScope": { - "oneOf": [ - { - "type": "object", - "additionalProperties": false, - "required": ["kind", "folders"], - "properties": { - "kind": { "const": "selected_folders" }, - "folders": { - "type": "array", - "minItems": 1, - "maxItems": 100, - "uniqueItems": true, - "items": { - "type": "string", - "minLength": 1, - "maxLength": 1024, - "pattern": "^(?!/)(?!\\.)(?!.*//)(?!.*\\\\)(?!.*/\\.)(?!(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*\\/(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*/$).+$" - } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": ["kind"], - "properties": { "kind": { "const": "collection" } } - } - ] - }, - "typePackProvision": { - "type": "object", - "additionalProperties": false, - "required": ["manifest", "resources", "provides"], - "properties": { - "manifest": { "$ref": "#/$defs/typePackManifest" }, - "resources": { - "type": "array", - "minItems": 1, - "maxItems": 100, - "items": { "$ref": "#/$defs/typePackSourceResource" } - }, - "provides": { - "type": "array", - "maxItems": 20, - "uniqueItems": true, - "items": { "$ref": "#/$defs/contract" } - } - } - }, - "typePackManifest": { - "type": "object", - "required": ["kind", "id", "version", "resources"], - "properties": { - "kind": { "const": "mdbase.type-pack" }, - "id": { "$ref": "#/$defs/identifier" }, - "version": { "$ref": "#/$defs/contract/properties/version" }, - "name": { "type": "string", "minLength": 1, "maxLength": 100 }, - "description": { "type": "string", "maxLength": 500 }, - "resources": { - "type": "array", - "minItems": 1, - "maxItems": 100, - "items": { "$ref": "#/$defs/typePackManifestResource" } - } - }, - "patternProperties": { "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": true }, - "additionalProperties": false - }, - "typePackManifestResource": { - "type": "object", - "additionalProperties": false, - "required": ["kind", "mode", "source", "target", "digest"], - "properties": { - "kind": { "enum": ["contract", "type", "schema"] }, - "mode": { "enum": ["managed", "seed"] }, - "upgrade_from": { - "oneOf": [ - { "$ref": "#/$defs/typePackUpgradeBaseline" }, - { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/typePackUpgradeBaseline" } } - ] - }, - "source": { "type": "string", "minLength": 1, "maxLength": 240 }, - "target": { "type": "string", "minLength": 1, "maxLength": 240 }, - "digest": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" } - } - }, - "typePackUpgradeBaseline": { - "type": "object", - "additionalProperties": false, - "required": ["digest", "document"], - "properties": { - "digest": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" }, - "document": { "type": "string", "maxLength": 262144 }, - "version": { "type": "integer", "minimum": 1 } - } - }, - "typePackSourceResource": { - "type": "object", - "additionalProperties": false, - "required": ["source", "document"], - "properties": { - "source": { "type": "string", "minLength": 1, "maxLength": 240 }, - "document": { "type": "string", "maxLength": 262144 } - } - }, - "notificationCriterion": { - "type": "object", - "additionalProperties": false, - "required": ["id", "event", "presentation"], - "properties": { - "id": { "$ref": "#/$defs/identifier" }, - "event": { "$ref": "#/$defs/contract" }, - "if": { - "type": "object", - "additionalProperties": false, - "required": ["$expr"], - "properties": { - "$expr": { "type": "string", "minLength": 1, "maxLength": 4096 } - } - }, - "debounce": { "$ref": "#/$defs/duration" }, - "minimum_interval": { "$ref": "#/$defs/duration" }, - "presentation": { - "type": "object", - "additionalProperties": false, - "required": ["title"], - "properties": { - "title": { "type": "string", "minLength": 1, "maxLength": 80 }, - "body": { "type": "string", "maxLength": 160 }, - "tag": { "type": "string", "minLength": 1, "maxLength": 80 } - } - } - } - }, - "nativeNotificationDelivery": { - "oneOf": [ - { - "type": "object", - "additionalProperties": false, - "required": ["mode", "firebase_project_id"], - "properties": { - "mode": { "const": "managed_fcm" }, - "firebase_project_id": { - "type": "string", - "minLength": 6, - "maxLength": 63, - "pattern": "^[a-z][a-z0-9-]*[a-z0-9]$" - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": ["mode", "url"], - "properties": { - "mode": { "const": "webhook" }, - "url": { - "type": "string", - "format": "uri", - "pattern": "^https://" - } - } - } - ] - } - } -} diff --git a/public/connect/schemas/mdbase-app.v1.json b/public/connect/schemas/mdbase-app.v1.json deleted file mode 100644 index 8b40da6..0000000 --- a/public/connect/schemas/mdbase-app.v1.json +++ /dev/null @@ -1,412 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/connect/schemas/mdbase-app.v1.json", - "title": "mdbase connect bundled application manifest v1", - "type": "object", - "additionalProperties": false, - "required": ["manifest_version", "id", "name"], - "properties": { - "manifest_version": { "const": 1 }, - "distribution": { - "enum": ["web", "portable"], - "description": "Portable declarations use device authorization and do not claim a browser origin." - }, - "id": { - "type": "string", - "minLength": 5, - "maxLength": 150, - "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*){2,}$", - "description": "Stable reverse-domain application identifier. This is presentation metadata, not publisher authentication." - }, - "name": { "type": "string", "minLength": 1, "maxLength": 100 }, - "homepage": { "type": "string", "format": "uri", "pattern": "^https://" }, - "project_url": { "type": "string", "format": "uri", "pattern": "^https://" }, - "icon": { "type": "string", "format": "uri", "pattern": "^https://" }, - "redirect_uris": { - "type": "array", - "minItems": 1, - "maxItems": 10, - "uniqueItems": true, - "items": { - "type": "string", - "format": "uri", - "description": "An HTTPS URI on the homepage origin or a private-use scheme derived from the application ID." - } - }, - "requirements": { "$ref": "#/$defs/requirements" }, - "provisions": { - "type": "object", - "additionalProperties": false, - "required": ["type_packs"], - "properties": { - "configuration": { - "type": "array", - "maxItems": 50, - "items": { "$ref": "#/$defs/configurationProvision" } - }, - "type_packs": { - "type": "array", - "maxItems": 20, - "items": { "$ref": "#/$defs/typePackProvision" } - } - } - }, - "notifications": { - "type": "object", - "additionalProperties": false, - "required": ["criteria"], - "properties": { - "criteria": { - "type": "array", - "maxItems": 50, - "items": { "$ref": "#/$defs/notificationCriterion" } - }, - "native_delivery": { "$ref": "#/$defs/nativeNotificationDelivery" } - } - } - }, - "oneOf": [ - { - "required": ["homepage", "redirect_uris"], - "properties": { - "distribution": { "const": "web" }, - "homepage": true, - "redirect_uris": true, - "project_url": false - } - }, - { - "required": ["distribution"], - "properties": { - "distribution": { "const": "portable" }, - "homepage": false, - "redirect_uris": false - } - } - ], - "$defs": { - "identifier": { - "type": "string", - "minLength": 1, - "maxLength": 100, - "pattern": "^[a-z0-9]+(?:[._-][a-z0-9]+)*$" - }, - "duration": { - "type": "string", - "pattern": "^[0-9]+(ms|s|m|h|d)$" - }, - "contract": { - "type": "object", - "additionalProperties": false, - "required": ["id", "version", "digest"], - "properties": { - "id": { "$ref": "#/$defs/identifier" }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" } - } - }, - "requirements": { - "type": "object", - "additionalProperties": false, - "required": ["access", "contracts"], - "properties": { - "capabilities": { "$ref": "#/$defs/capabilityRequirements" }, - "access": { - "const": "full_collection", - "description": "Compatibility declaration for collection-level application authorization." - }, - "collection_kind": { - "const": "hosted", - "description": "Require a durable provider-backed collection with direct sync support." - }, - "people": { - "type": "object", - "additionalProperties": false, - "required": ["version"], - "anyOf": [{ "required": ["required"] }, { "required": ["optional"] }], - "properties": { - "version": { "const": 1 }, - "required": { "$ref": "#/$defs/peoplePermissions" }, - "optional": { "$ref": "#/$defs/peoplePermissions" } - } - }, - "files": { "$ref": "#/$defs/fileRequirement" }, - "configuration": { - "type": "array", - "maxItems": 50, - "items": { "$ref": "#/$defs/configurationRequirement" } - }, - "contracts": { - "type": "array", - "maxItems": 20, - "uniqueItems": true, - "items": { "$ref": "#/$defs/contract" } - } - } - }, - "capabilityRequirements": { - "type": "object", - "additionalProperties": false, - "required": ["contract_version", "required"], - "properties": { - "contract_version": { "const": 2 }, - "required": { - "type": "array", - "maxItems": 32, - "uniqueItems": true, - "items": { "$ref": "#/$defs/applicationCapability" } - }, - "optional": { - "type": "array", - "maxItems": 32, - "uniqueItems": true, - "items": { "$ref": "#/$defs/applicationCapability" } - } - } - }, - "configurationValue": { - "anyOf": [ - { "type": "string" }, - { "type": "number" }, - { "type": "boolean" }, - { "type": "null" } - ] - }, - "configurationRequirement": { - "type": "object", - "additionalProperties": false, - "required": ["id", "path", "predicate", "value"], - "properties": { - "id": { - "type": "string", - "minLength": 1, - "maxLength": 100, - "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$" - }, - "path": { "type": "string", "minLength": 1, "maxLength": 1024 }, - "predicate": { "const": "contains" }, - "value": { "$ref": "#/$defs/configurationValue" } - } - }, - "configurationProvision": { - "type": "object", - "additionalProperties": false, - "required": ["requirement", "operation", "path", "value"], - "properties": { - "requirement": { - "type": "string", - "minLength": 1, - "maxLength": 100, - "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$" - }, - "operation": { "const": "set_add" }, - "path": { "type": "string", "minLength": 1, "maxLength": 1024 }, - "value": { "$ref": "#/$defs/configurationValue" } - } - }, - "applicationCapability": { - "enum": [ - "collection.read", - "records.create", - "records.edit", - "records.delete", - "views.manage", - "definitions.manage", - "background.schedule", - "offline.replica" - ] - }, - "peoplePermissions": { - "type": "array", "minItems": 1, "uniqueItems": true, - "items": { "enum": ["identity", "members"] } - }, - "fileRequirement": { - "type": "object", - "additionalProperties": false, - "required": ["required", "scope"], - "properties": { - "required": { "$ref": "#/$defs/fileActions" }, - "optional": { "$ref": "#/$defs/fileActions" }, - "scope": { "$ref": "#/$defs/fileScope" } - } - }, - "fileActions": { - "type": "array", - "minItems": 1, - "maxItems": 6, - "uniqueItems": true, - "items": { - "enum": ["list", "read", "add", "replace", "move", "delete"] - } - }, - "fileScope": { - "oneOf": [ - { - "type": "object", - "additionalProperties": false, - "required": ["kind", "folders"], - "properties": { - "kind": { "const": "selected_folders" }, - "folders": { - "type": "array", - "minItems": 1, - "maxItems": 100, - "uniqueItems": true, - "items": { - "type": "string", - "minLength": 1, - "maxLength": 1024, - "pattern": "^(?!/)(?!\\.)(?!.*//)(?!.*\\\\)(?!.*/\\.)(?!(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*\\/(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*/$).+$" - } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": ["kind"], - "properties": { "kind": { "const": "collection" } } - } - ] - }, - "typePackProvision": { - "type": "object", - "additionalProperties": false, - "required": ["manifest", "resources", "provides"], - "properties": { - "manifest": { "$ref": "#/$defs/typePackManifest" }, - "resources": { - "type": "array", - "minItems": 1, - "maxItems": 100, - "items": { "$ref": "#/$defs/typePackSourceResource" } - }, - "provides": { - "type": "array", - "maxItems": 20, - "uniqueItems": true, - "items": { "$ref": "#/$defs/contract" } - } - } - }, - "typePackManifest": { - "type": "object", - "required": ["kind", "id", "version", "resources"], - "properties": { - "kind": { "const": "mdbase.type-pack" }, - "id": { "$ref": "#/$defs/identifier" }, - "version": { "$ref": "#/$defs/contract/properties/version" }, - "name": { "type": "string", "minLength": 1, "maxLength": 100 }, - "description": { "type": "string", "maxLength": 500 }, - "resources": { - "type": "array", - "minItems": 1, - "maxItems": 100, - "items": { "$ref": "#/$defs/typePackManifestResource" } - } - }, - "patternProperties": { "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": true }, - "additionalProperties": false - }, - "typePackManifestResource": { - "type": "object", - "additionalProperties": false, - "required": ["kind", "mode", "source", "target", "digest"], - "properties": { - "kind": { "enum": ["contract", "type", "schema"] }, - "mode": { "enum": ["managed", "seed"] }, - "upgrade_from": { - "oneOf": [ - { "$ref": "#/$defs/typePackUpgradeBaseline" }, - { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/typePackUpgradeBaseline" } } - ] - }, - "source": { "type": "string", "minLength": 1, "maxLength": 240 }, - "target": { "type": "string", "minLength": 1, "maxLength": 240 }, - "digest": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" } - } - }, - "typePackUpgradeBaseline": { - "type": "object", - "additionalProperties": false, - "required": ["digest", "document"], - "properties": { - "digest": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" }, - "document": { "type": "string", "maxLength": 262144 }, - "version": { "type": "integer", "minimum": 1 } - } - }, - "typePackSourceResource": { - "type": "object", - "additionalProperties": false, - "required": ["source", "document"], - "properties": { - "source": { "type": "string", "minLength": 1, "maxLength": 240 }, - "document": { "type": "string", "maxLength": 262144 } - } - }, - "notificationCriterion": { - "type": "object", - "additionalProperties": false, - "required": ["id", "event", "presentation"], - "properties": { - "id": { "$ref": "#/$defs/identifier" }, - "event": { "$ref": "#/$defs/contract" }, - "if": { - "type": "object", - "additionalProperties": false, - "required": ["$expr"], - "properties": { - "$expr": { "type": "string", "minLength": 1, "maxLength": 4096 } - } - }, - "debounce": { "$ref": "#/$defs/duration" }, - "minimum_interval": { "$ref": "#/$defs/duration" }, - "presentation": { - "type": "object", - "additionalProperties": false, - "required": ["title"], - "properties": { - "title": { "type": "string", "minLength": 1, "maxLength": 80 }, - "body": { "type": "string", "maxLength": 160 }, - "tag": { "type": "string", "minLength": 1, "maxLength": 80 } - } - } - } - }, - "nativeNotificationDelivery": { - "oneOf": [ - { - "type": "object", - "additionalProperties": false, - "required": ["mode", "firebase_project_id"], - "properties": { - "mode": { "const": "managed_fcm" }, - "firebase_project_id": { - "type": "string", - "minLength": 6, - "maxLength": 63, - "pattern": "^[a-z][a-z0-9-]*[a-z0-9]$" - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": ["mode", "url"], - "properties": { - "mode": { "const": "webhook" }, - "url": { - "type": "string", - "format": "uri", - "pattern": "^https://" - } - } - } - ] - } - } -} diff --git a/public/connect/schemas/mdbase-query.v0.3.schema.json b/public/connect/schemas/mdbase-query.v0.3.schema.json deleted file mode 100644 index 0d2f1bd..0000000 --- a/public/connect/schemas/mdbase-query.v0.3.schema.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/v0.3/query.schema.json", - "title": "mdbase v0.3 query object", - "type": "object", - "properties": { - "types": { "$ref": "#/$defs/typeList" }, - "context": { "$ref": "#/$defs/queryContext" }, - "projections": { "$ref": "#/$defs/projectionSet" }, - "where": { "$ref": "#/$defs/expression" }, - "select": { "$ref": "#/$defs/select" }, - "order_by": { "$ref": "#/$defs/orderBy" }, - "group_by": { "$ref": "#/$defs/groupBy" }, - "summary_functions": { "$ref": "#/$defs/summaryFunctionSet" }, - "summaries": { "$ref": "#/$defs/summaries" }, - "limit": { "type": "integer", "minimum": 0 }, - "offset": { "type": "integer", "minimum": 0 }, - "include_body": { "type": "boolean", "default": false }, - "output": { "const": "metadata" }, - "frontmatter_mode": { - "enum": ["effective", "persisted", "both"], - "default": "effective" - } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false, - "allOf": [{ - "if": { "required": ["output"], "properties": { "output": { "const": "metadata" } } }, - "then": { "properties": { "include_body": { "const": false } } } - }], - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "typeName": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9_-]{0,127}$" - }, - "fieldName": { - "type": "string", - "pattern": "^[A-Za-z_][A-Za-z0-9_:-]*$" - }, - "expression": { - "type": "string", - "minLength": 1 - }, - "extension": { - "type": "object", - "additionalProperties": true - }, - "typeList": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { "$ref": "#/$defs/typeName" } - }, - "queryContext": { - "type": "object", - "required": ["this"], - "properties": { - "this": { - "type": "object", - "required": ["path"], - "properties": { - "path": { "type": "string", "minLength": 1 } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "projectionSet": { - "type": "object", - "propertyNames": { "$ref": "#/$defs/fieldName" }, - "additionalProperties": { "$ref": "#/$defs/projection" } - }, - "projection": { - "type": "object", - "required": ["expr"], - "properties": { - "expr": { "$ref": "#/$defs/expression" }, - "description": { "type": "string" } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false - }, - "select": { - "type": "array", - "minItems": 1, - "items": { - "oneOf": [ - { "type": "string", "minLength": 1 }, - { "$ref": "#/$defs/selectExpression" } - ] - } - }, - "selectExpression": { - "type": "object", - "required": ["name", "expr"], - "properties": { - "name": { "$ref": "#/$defs/fieldName" }, - "expr": { "$ref": "#/$defs/expression" }, - "label": { "type": "string" }, - "description": { "type": "string" } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false - }, - "orderBy": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": ["field"], - "properties": { - "field": { "type": "string", "minLength": 1 }, - "direction": { "enum": ["asc", "desc"], "default": "asc" } - }, - "additionalProperties": false - } - }, - "groupBy": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": ["field"], - "properties": { - "field": { "type": "string", "minLength": 1 }, - "direction": { "enum": ["asc", "desc"], "default": "asc" } - }, - "additionalProperties": false - } - }, - "summaryFunctionSet": { - "type": "object", - "propertyNames": { "$ref": "#/$defs/fieldName" }, - "additionalProperties": { "$ref": "#/$defs/summaryFunction" } - }, - "summaryFunction": { - "type": "object", - "required": ["expr"], - "properties": { - "expr": { "$ref": "#/$defs/expression" }, - "description": { "type": "string" } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false - }, - "summaries": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#/$defs/summary" } - }, - "summary": { - "type": "object", - "required": ["field", "function"], - "properties": { - "field": { "type": "string", "minLength": 1 }, - "function": { "$ref": "#/$defs/identifier" }, - "name": { "$ref": "#/$defs/fieldName" }, - "label": { "type": "string" } - }, - "additionalProperties": false - } - } -} diff --git a/public/connect/schemas/notification-webhook.v1.schema.json b/public/connect/schemas/notification-webhook.v1.schema.json deleted file mode 100644 index 4122b9a..0000000 --- a/public/connect/schemas/notification-webhook.v1.schema.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/connect/schemas/notification-webhook.v1.json", - "title": "mdbase notification webhook v1", - "type": "object", - "additionalProperties": false, - "required": [ - "type", - "version", - "delivery_id", - "connection_id", - "notification" - ], - "properties": { - "type": { "const": "mdbase.notification.webhook" }, - "version": { "const": 1 }, - "delivery_id": { "type": "string", "format": "uuid" }, - "connection_id": { - "type": "string", - "format": "uuid", - "description": "Opaque application grant reference returned during authorization." - }, - "notification": { "$ref": "#/$defs/notification" } - }, - "$defs": { - "notification": { - "type": "object", - "additionalProperties": false, - "required": [ - "type", - "version", - "signal_id", - "criterion_id", - "cursor", - "presentation" - ], - "properties": { - "type": { "const": "mdbase.notification" }, - "version": { "const": 1 }, - "signal_id": { "type": "string", "minLength": 1, "maxLength": 200 }, - "criterion_id": { "type": "string", "minLength": 1, "maxLength": 100 }, - "cursor": { "type": "string", "minLength": 1, "maxLength": 2000 }, - "presentation": { - "type": "object", - "additionalProperties": false, - "required": ["title"], - "properties": { - "title": { "type": "string", "minLength": 1, "maxLength": 80 }, - "body": { "type": "string", "maxLength": 160 }, - "tag": { "type": "string", "minLength": 1, "maxLength": 80 } - } - } - } - } - } -} diff --git a/public/connect/schemas/operation-catalog.v1.json b/public/connect/schemas/operation-catalog.v1.json deleted file mode 100644 index 913f393..0000000 --- a/public/connect/schemas/operation-catalog.v1.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "catalog_version": 1, - "collection_operations": [ - { "id": "describe", "input_schema_version": 1, "mutation": "never" }, - { "id": "changes", "input_schema_version": 1, "mutation": "never" }, - { "id": "read", "input_schema_version": 1, "mutation": "never" }, - { "id": "query", "input_schema_version": 1, "mutation": "never" }, - { "id": "list_views", "input_schema_version": 1, "mutation": "never" }, - { "id": "execute_view", "input_schema_version": 1, "mutation": "never" }, - { "id": "read_view_source", "input_schema_version": 1, "mutation": "never" }, - { "id": "create_view_source", "input_schema_version": 1, "mutation": "always" }, - { "id": "update_view_source", "input_schema_version": 1, "mutation": "always" }, - { "id": "delete_view_source", "input_schema_version": 1, "mutation": "always" }, - { "id": "validate", "input_schema_version": 1, "mutation": "never" }, - { "id": "create", "input_schema_version": 1, "mutation": "always" }, - { "id": "update", "input_schema_version": 1, "mutation": "always" }, - { "id": "delete", "input_schema_version": 1, "mutation": "always", "dry_run": "nonmutating" }, - { "id": "rename", "input_schema_version": 1, "mutation": "always", "dry_run": "nonmutating" }, - { "id": "read_type", "input_schema_version": 1, "mutation": "never" }, - { "id": "create_type", "input_schema_version": 1, "mutation": "always" }, - { "id": "update_type", "input_schema_version": 1, "mutation": "always" }, - { "id": "assess_type_pack", "input_schema_version": 1, "mutation": "never" }, - { "id": "apply_type_pack", "input_schema_version": 1, "mutation": "always" }, - { "id": "assess_collection_setup", "input_schema_version": 1, "mutation": "never" }, - { "id": "apply_collection_setup", "input_schema_version": 1, "mutation": "always" }, - { "id": "list_timers", "input_schema_version": 1, "mutation": "never", "requires_timer_criterion": true }, - { "id": "put_timer", "input_schema_version": 1, "mutation": "always", "requires_timer_criterion": true }, - { "id": "cancel_timer", "input_schema_version": 1, "mutation": "always", "requires_timer_criterion": true }, - { "id": "reconcile_timers", "input_schema_version": 1, "mutation": "always", "requires_timer_criterion": true }, - { "id": "sync", "input_schema_version": 1, "mutation": "sync_action" } - ], - "file_control_messages": [ - { "id": "list_files", "input_schema_version": 1, "mutation": false }, - { "id": "stat_file", "input_schema_version": 1, "mutation": false }, - { "id": "open_file_upload", "input_schema_version": 1, "mutation": true }, - { "id": "open_file_download", "input_schema_version": 1, "mutation": false }, - { "id": "move_file", "input_schema_version": 1, "mutation": true }, - { "id": "delete_file", "input_schema_version": 1, "mutation": true }, - { "id": "get_file_transfer_status", "input_schema_version": 1, "mutation": false }, - { "id": "commit_file_upload", "input_schema_version": 1, "mutation": true }, - { "id": "abort_file_transfer", "input_schema_version": 1, "mutation": true } - ] -} diff --git a/public/connect/schemas/operation-mutation-classification.v1.json b/public/connect/schemas/operation-mutation-classification.v1.json deleted file mode 100644 index fbf7332..0000000 --- a/public/connect/schemas/operation-mutation-classification.v1.json +++ /dev/null @@ -1,554 +0,0 @@ -{ - "catalog_version": 1, - "cases": [ - { - "operation": "describe", - "input": {}, - "schema_version": 1, - "identifier": null - }, - { - "operation": "describe", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "changes", - "input": {}, - "schema_version": 1, - "identifier": null - }, - { - "operation": "changes", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "read", - "input": {}, - "schema_version": 1, - "identifier": null - }, - { - "operation": "read", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "query", - "input": {}, - "schema_version": 1, - "identifier": null - }, - { - "operation": "query", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "list_views", - "input": {}, - "schema_version": 1, - "identifier": null - }, - { - "operation": "list_views", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "execute_view", - "input": {}, - "schema_version": 1, - "identifier": null - }, - { - "operation": "execute_view", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "read_view_source", - "input": {}, - "schema_version": 1, - "identifier": null - }, - { - "operation": "read_view_source", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "create_view_source", - "input": {}, - "schema_version": 1, - "identifier": "create_view_source" - }, - { - "operation": "create_view_source", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": "create_view_source" - }, - { - "operation": "update_view_source", - "input": {}, - "schema_version": 1, - "identifier": "update_view_source" - }, - { - "operation": "update_view_source", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": "update_view_source" - }, - { - "operation": "delete_view_source", - "input": {}, - "schema_version": 1, - "identifier": "delete_view_source" - }, - { - "operation": "delete_view_source", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": "delete_view_source" - }, - { - "operation": "validate", - "input": {}, - "schema_version": 1, - "identifier": null - }, - { - "operation": "validate", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "create", - "input": {}, - "schema_version": 1, - "identifier": "create" - }, - { - "operation": "create", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": "create" - }, - { - "operation": "update", - "input": {}, - "schema_version": 1, - "identifier": "update" - }, - { - "operation": "update", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": "update" - }, - { - "operation": "delete", - "input": {}, - "schema_version": 1, - "identifier": "delete" - }, - { - "operation": "delete", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "rename", - "input": {}, - "schema_version": 1, - "identifier": "rename" - }, - { - "operation": "rename", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "read_type", - "input": {}, - "schema_version": 1, - "identifier": null - }, - { - "operation": "read_type", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "create_type", - "input": {}, - "schema_version": 1, - "identifier": "create_type" - }, - { - "operation": "create_type", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": "create_type" - }, - { - "operation": "update_type", - "input": {}, - "schema_version": 1, - "identifier": "update_type" - }, - { - "operation": "update_type", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": "update_type" - }, - { - "operation": "assess_type_pack", - "input": {}, - "schema_version": 1, - "identifier": null - }, - { - "operation": "assess_type_pack", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "apply_type_pack", - "input": {}, - "schema_version": 1, - "identifier": "apply_type_pack" - }, - { - "operation": "apply_type_pack", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": "apply_type_pack" - }, - { - "operation": "assess_collection_setup", - "input": {}, - "schema_version": 1, - "identifier": null - }, - { - "operation": "assess_collection_setup", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "apply_collection_setup", - "input": {}, - "schema_version": 1, - "identifier": "apply_collection_setup" - }, - { - "operation": "apply_collection_setup", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": "apply_collection_setup" - }, - { - "operation": "list_timers", - "input": {}, - "schema_version": 1, - "identifier": null - }, - { - "operation": "list_timers", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "put_timer", - "input": {}, - "schema_version": 1, - "identifier": "put_timer" - }, - { - "operation": "put_timer", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": "put_timer" - }, - { - "operation": "cancel_timer", - "input": {}, - "schema_version": 1, - "identifier": "cancel_timer" - }, - { - "operation": "cancel_timer", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": "cancel_timer" - }, - { - "operation": "reconcile_timers", - "input": {}, - "schema_version": 1, - "identifier": "reconcile_timers" - }, - { - "operation": "reconcile_timers", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": "reconcile_timers" - }, - { - "operation": "sync", - "input": {}, - "schema_version": 1, - "identifier": null - }, - { - "operation": "sync", - "input": { - "dry_run": true - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "sync", - "input": { - "action": "changes", - "dry_run": true - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "sync", - "input": { - "action": "mutate", - "dry_run": true - }, - "schema_version": 1, - "identifier": "sync:mutate" - }, - { - "operation": "file_control", - "input": { - "type": "list_files" - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "file_control", - "input": { - "type": "list_files", - "dry_run": true - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "file_control", - "input": { - "type": "stat_file" - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "file_control", - "input": { - "type": "stat_file", - "dry_run": true - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "file_control", - "input": { - "type": "open_file_upload" - }, - "schema_version": 1, - "identifier": "file_control:open_file_upload" - }, - { - "operation": "file_control", - "input": { - "type": "open_file_upload", - "dry_run": true - }, - "schema_version": 1, - "identifier": "file_control:open_file_upload" - }, - { - "operation": "file_control", - "input": { - "type": "open_file_download" - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "file_control", - "input": { - "type": "open_file_download", - "dry_run": true - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "file_control", - "input": { - "type": "move_file" - }, - "schema_version": 1, - "identifier": "file_control:move_file" - }, - { - "operation": "file_control", - "input": { - "type": "move_file", - "dry_run": true - }, - "schema_version": 1, - "identifier": "file_control:move_file" - }, - { - "operation": "file_control", - "input": { - "type": "delete_file" - }, - "schema_version": 1, - "identifier": "file_control:delete_file" - }, - { - "operation": "file_control", - "input": { - "type": "delete_file", - "dry_run": true - }, - "schema_version": 1, - "identifier": "file_control:delete_file" - }, - { - "operation": "file_control", - "input": { - "type": "get_file_transfer_status" - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "file_control", - "input": { - "type": "get_file_transfer_status", - "dry_run": true - }, - "schema_version": 1, - "identifier": null - }, - { - "operation": "file_control", - "input": { - "type": "commit_file_upload" - }, - "schema_version": 1, - "identifier": "file_control:commit_file_upload" - }, - { - "operation": "file_control", - "input": { - "type": "commit_file_upload", - "dry_run": true - }, - "schema_version": 1, - "identifier": "file_control:commit_file_upload" - }, - { - "operation": "file_control", - "input": { - "type": "abort_file_transfer" - }, - "schema_version": 1, - "identifier": "file_control:abort_file_transfer" - }, - { - "operation": "file_control", - "input": { - "type": "abort_file_transfer", - "dry_run": true - }, - "schema_version": 1, - "identifier": "file_control:abort_file_transfer" - } - ] -} diff --git a/public/connect/schemas/sync.v1.schema.json b/public/connect/schemas/sync.v1.schema.json deleted file mode 100644 index baa2c55..0000000 --- a/public/connect/schemas/sync.v1.schema.json +++ /dev/null @@ -1,483 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/connect/schemas/sync.v1.json", - "title": "mdbase connect replication protocol 1", - "oneOf": [ - { "$ref": "#/$defs/session" }, - { "$ref": "#/$defs/snapshotPage" }, - { "$ref": "#/$defs/fileSnapshotPage" }, - { "$ref": "#/$defs/changesPage" }, - { "$ref": "#/$defs/mutation" }, - { "$ref": "#/$defs/receipt" } - ], - "$defs": { - "uuid": { "type": "string", "format": "uuid" }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "fileDescriptor": { - "$ref": "https://mdbase.dev/connect/schemas/files.v1.json#/$defs/fileDescriptor" - }, - "collectionType": { - "type": "object", - "additionalProperties": false, - "required": ["name", "schema", "extensions"], - "properties": { - "name": { "type": "string", "minLength": 1 }, - "version": { "type": "integer", "minimum": 1 }, - "description": { "type": "string" }, - "schema": { "type": "object" }, - "collection": { "type": "object" }, - "lifecycle": { "type": "object" }, - "extensions": { "type": "object" } - } - }, - "contract": { - "type": "object", - "additionalProperties": false, - "required": ["contract_type", "id", "version", "digest", "schema", "implementations"], - "properties": { - "contract_type": { "const": "record" }, - "id": { "type": "string", "minLength": 1 }, - "version": { "$ref": "#/$defs/semanticVersion" }, - "digest": { "$ref": "#/$defs/digest" }, - "schema": { "type": "object" }, - "binding_schema": { "type": "object" }, - "implementations": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#/$defs/contractImplementation" } - } - } - }, - "contractImplementation": { - "type": "object", - "additionalProperties": false, - "required": ["type_name", "type_version", "digest", "fields"], - "properties": { - "type_name": { "type": "string", "minLength": 1 }, - "type_version": { "type": "integer", "minimum": 1 }, - "type_path": { "type": "string", "minLength": 1 }, - "digest": { "$ref": "#/$defs/digest" }, - "fields": { - "type": "object", - "additionalProperties": { "type": "string", "minLength": 1 } - }, - "binding": { "type": "object" } - } - }, - "resources": { - "type": "object", - "additionalProperties": false, - "required": ["revision", "spec_version", "types", "contracts"], - "properties": { - "revision": { "type": "string", "minLength": 1 }, - "spec_version": { "type": "string", "minLength": 1 }, - "types": { "type": "array", "items": { "$ref": "#/$defs/collectionType" } }, - "contracts": { "type": "array", "items": { "$ref": "#/$defs/contract" } }, - "documents": { "type": "array", "items": { "$ref": "#/$defs/resourceDocument" } } - } - }, - "resourceDocument": { - "type": "object", - "additionalProperties": false, - "required": ["path", "kind", "revision", "document"], - "properties": { - "path": { "type": "string", "minLength": 1 }, - "kind": { "enum": ["configuration", "lock", "type", "contract", "schema", "view"] }, - "revision": { "$ref": "#/$defs/digest" }, - "document": { "type": "string" } - } - }, - "record": { - "type": "object", - "additionalProperties": false, - "required": ["record_id", "path", "document", "revision", "frontmatter", "body", "types"], - "properties": { - "record_id": { "$ref": "#/$defs/uuid" }, - "path": { "type": "string", "minLength": 1 }, - "document": { "type": "string" }, - "revision": { "$ref": "#/$defs/digest" }, - "frontmatter": { "type": "object" }, - "body": { "type": "string" }, - "types": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } } - } - }, - "snapshotRecord": { - "type": "object", - "additionalProperties": false, - "required": ["record_id", "path", "document", "revision", "frontmatter", "body", "types"], - "properties": { - "record_id": { "$ref": "#/$defs/uuid" }, - "path": { "type": "string", "minLength": 1 }, - "revision": { "$ref": "#/$defs/digest" }, - "frontmatter": { "type": "object" }, - "body": { "type": "string" }, - "types": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } }, - "document": { "type": "string" } - } - }, - "session": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "protocol_profile", "session_id", "replica_id", "collection_id", "mode", "scope_epoch", "retained_after", "head", "snapshot_id", "resources"], - "properties": { - "protocol_version": { "const": 1 }, - "protocol_profile": { "const": "exact_document_v1" }, - "session_id": { "$ref": "#/$defs/uuid" }, - "replica_id": { "$ref": "#/$defs/uuid" }, - "collection_id": { "$ref": "#/$defs/uuid" }, - "mode": { "enum": ["read_only", "read_write"] }, - "scope_epoch": { "type": "integer", "minimum": 1 }, - "retained_after": { "type": "integer", "minimum": 0 }, - "head": { "type": "integer", "minimum": 0 }, - "snapshot_id": { "$ref": "#/$defs/uuid" }, - "resources": { "$ref": "#/$defs/resources" } - } - }, - "snapshotPage": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "snapshot_id", "scope_epoch", "cursor", "records"], - "properties": { - "protocol_version": { "const": 1 }, - "snapshot_id": { "$ref": "#/$defs/uuid" }, - "scope_epoch": { "type": "integer", "minimum": 1 }, - "cursor": { "type": "integer", "minimum": 0 }, - "records": { "type": "array", "items": { "$ref": "#/$defs/snapshotRecord" } }, - "next_page": { "type": "string", "pattern": "^[1-9][0-9]*$" } - } - }, - "fileSnapshotPage": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "type", "snapshot_id", "scope_epoch", "cursor", "files"], - "properties": { - "protocol_version": { "const": 1 }, - "type": { "const": "file_snapshot_page" }, - "snapshot_id": { "$ref": "#/$defs/uuid" }, - "scope_epoch": { "type": "integer", "minimum": 1 }, - "cursor": { "type": "integer", "minimum": 0 }, - "files": { "type": "array", "items": { "$ref": "#/$defs/fileDescriptor" } }, - "next_page": { "type": "string", "pattern": "^[1-9][0-9]*$" } - } - }, - "put": { - "type": "object", - "additionalProperties": false, - "required": ["sequence", "type", "record"], - "properties": { - "sequence": { "type": "integer", "minimum": 1 }, - "type": { "const": "put" }, - "record": { "$ref": "#/$defs/record" } - } - }, - "remove": { - "type": "object", - "additionalProperties": false, - "required": ["sequence", "type", "record_id", "previous_path", "revision"], - "properties": { - "sequence": { "type": "integer", "minimum": 1 }, - "type": { "const": "remove" }, - "record_id": { "$ref": "#/$defs/uuid" }, - "previous_path": { "type": "string", "minLength": 1 }, - "revision": { "type": "string", "minLength": 1 } - } - }, - "filePut": { - "type": "object", - "additionalProperties": false, - "required": ["sequence", "type", "file"], - "properties": { - "sequence": { "type": "integer", "minimum": 1 }, - "type": { "const": "file_put" }, - "file": { "$ref": "#/$defs/fileDescriptor" } - } - }, - "fileRemove": { - "type": "object", - "additionalProperties": false, - "required": ["sequence", "type", "file_id", "previous_path", "revision"], - "properties": { - "sequence": { "type": "integer", "minimum": 1 }, - "type": { "const": "file_remove" }, - "file_id": { "$ref": "#/$defs/uuid" }, - "previous_path": { "type": "string", "minLength": 1 }, - "revision": { "type": "string", "minLength": 1 } - } - }, - "changesPage": { - "type": "object", - "additionalProperties": false, - "required": ["protocol_version", "scope_epoch", "events", "cursor", "head", "has_more", "reset_required"], - "properties": { - "protocol_version": { "const": 1 }, - "scope_epoch": { "type": "integer", "minimum": 1 }, - "events": { - "type": "array", - "items": { - "oneOf": [ - { "$ref": "#/$defs/put" }, - { "$ref": "#/$defs/remove" }, - { "$ref": "#/$defs/filePut" }, - { "$ref": "#/$defs/fileRemove" } - ] - } - }, - "cursor": { "type": "integer", "minimum": 0 }, - "head": { "type": "integer", "minimum": 0 }, - "has_more": { "type": "boolean" }, - "reset_required": { "type": "boolean" } - } - }, - "recordPutMutation": { - "type": "object", - "additionalProperties": false, - "required": ["mutation_id", "replica_id", "scope_epoch", "operation", "record_id", "path", "document", "created_at"], - "properties": { - "mutation_id": { "$ref": "#/$defs/uuid" }, - "replica_id": { "$ref": "#/$defs/uuid" }, - "scope_epoch": { "type": "integer", "minimum": 1 }, - "operation": { "const": "put" }, - "record_id": { "$ref": "#/$defs/uuid" }, - "base_revision": { "type": "string", "minLength": 1 }, - "path": { "type": "string", "minLength": 1 }, - "document": { "type": "string" }, - "created_at": { "type": "string", "format": "date-time" }, - "causal_predecessor": { "$ref": "#/$defs/uuid" } - } - }, - "recordDeleteMutation": { - "type": "object", - "additionalProperties": false, - "required": ["mutation_id", "replica_id", "scope_epoch", "operation", "record_id", "base_revision", "created_at"], - "properties": { - "mutation_id": { "$ref": "#/$defs/uuid" }, - "replica_id": { "$ref": "#/$defs/uuid" }, - "scope_epoch": { "type": "integer", "minimum": 1 }, - "operation": { "const": "delete" }, - "record_id": { "$ref": "#/$defs/uuid" }, - "base_revision": { "type": "string", "minLength": 1 }, - "created_at": { "type": "string", "format": "date-time" }, - "causal_predecessor": { "$ref": "#/$defs/uuid" } - } - }, - "recordMoveMutation": { - "type": "object", - "additionalProperties": false, - "required": ["mutation_id", "replica_id", "scope_epoch", "operation", "record_id", "base_revision", "path", "created_at"], - "properties": { - "mutation_id": { "$ref": "#/$defs/uuid" }, - "replica_id": { "$ref": "#/$defs/uuid" }, - "scope_epoch": { "type": "integer", "minimum": 1 }, - "operation": { "const": "move" }, - "record_id": { "$ref": "#/$defs/uuid" }, - "base_revision": { "type": "string", "minLength": 1 }, - "path": { "type": "string", "minLength": 1 }, - "created_at": { "type": "string", "format": "date-time" }, - "causal_predecessor": { "$ref": "#/$defs/uuid" } - } - }, - "filePutMutation": { - "type": "object", - "additionalProperties": false, - "required": [ - "mutation_id", "replica_id", "scope_epoch", "operation", "file_id", - "path", "transfer_id", "content_digest", "size", "created_at" - ], - "properties": { - "mutation_id": { "$ref": "#/$defs/uuid" }, - "replica_id": { "$ref": "#/$defs/uuid" }, - "scope_epoch": { "type": "integer", "minimum": 1 }, - "operation": { "const": "file_put" }, - "file_id": { "$ref": "#/$defs/uuid" }, - "base_revision": { "type": "string", "minLength": 1 }, - "path": { "type": "string", "minLength": 1 }, - "transfer_id": { "$ref": "#/$defs/uuid" }, - "content_digest": { "$ref": "#/$defs/digest" }, - "size": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, - "media_type": { "type": "string", "minLength": 1, "maxLength": 255 }, - "created_at": { "type": "string", "format": "date-time" }, - "causal_predecessor": { "$ref": "#/$defs/uuid" } - } - }, - "fileMoveMutation": { - "type": "object", - "additionalProperties": false, - "required": [ - "mutation_id", "replica_id", "scope_epoch", "operation", "file_id", - "base_revision", "path", "update_references", "created_at" - ], - "properties": { - "mutation_id": { "$ref": "#/$defs/uuid" }, - "replica_id": { "$ref": "#/$defs/uuid" }, - "scope_epoch": { "type": "integer", "minimum": 1 }, - "operation": { "const": "file_move" }, - "file_id": { "$ref": "#/$defs/uuid" }, - "base_revision": { "type": "string", "minLength": 1 }, - "path": { "type": "string", "minLength": 1 }, - "update_references": { "type": "boolean" }, - "created_at": { "type": "string", "format": "date-time" }, - "causal_predecessor": { "$ref": "#/$defs/uuid" } - } - }, - "fileDeleteMutation": { - "type": "object", - "additionalProperties": false, - "required": [ - "mutation_id", "replica_id", "scope_epoch", "operation", "file_id", - "base_revision", "created_at" - ], - "properties": { - "mutation_id": { "$ref": "#/$defs/uuid" }, - "replica_id": { "$ref": "#/$defs/uuid" }, - "scope_epoch": { "type": "integer", "minimum": 1 }, - "operation": { "const": "file_delete" }, - "file_id": { "$ref": "#/$defs/uuid" }, - "base_revision": { "type": "string", "minLength": 1 }, - "created_at": { "type": "string", "format": "date-time" }, - "causal_predecessor": { "$ref": "#/$defs/uuid" } - } - }, - "mutation": { - "oneOf": [ - { "$ref": "#/$defs/recordPutMutation" }, - { "$ref": "#/$defs/recordMoveMutation" }, - { "$ref": "#/$defs/recordDeleteMutation" }, - { "$ref": "#/$defs/filePutMutation" }, - { "$ref": "#/$defs/fileMoveMutation" }, - { "$ref": "#/$defs/fileDeleteMutation" } - ] - }, - "recordReceipt": { - "oneOf": [ - { - "type": "object", - "additionalProperties": false, - "required": ["mutation_id", "status", "sequence"], - "properties": { - "mutation_id": { "$ref": "#/$defs/uuid" }, - "status": { "enum": ["applied", "previously_applied"] }, - "sequence": { "type": "integer", "minimum": 1 }, - "record": { "$ref": "#/$defs/record" } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": ["mutation_id", "status", "conflict"], - "properties": { - "mutation_id": { "$ref": "#/$defs/uuid" }, - "status": { "const": "conflicted" }, - "conflict": { - "type": "object", - "additionalProperties": false, - "required": ["record_id", "mutation"], - "properties": { - "record_id": { "$ref": "#/$defs/uuid" }, - "mutation": { - "oneOf": [ - { "$ref": "#/$defs/recordPutMutation" }, - { "$ref": "#/$defs/recordMoveMutation" }, - { "$ref": "#/$defs/recordDeleteMutation" } - ] - }, - "current": { "$ref": "#/$defs/record" }, - "current_revision": { "type": "string" } - } - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": ["mutation_id", "status", "error"], - "properties": { - "mutation_id": { "$ref": "#/$defs/uuid" }, - "status": { "const": "rejected" }, - "error": { - "type": "object", - "additionalProperties": false, - "required": ["code", "message"], - "properties": { - "code": { "type": "string", "minLength": 1 }, - "message": { "type": "string" } - } - } - } - } - ] - }, - "fileConflict": { - "type": "object", - "additionalProperties": false, - "required": ["file_id", "mutation"], - "properties": { - "file_id": { "$ref": "#/$defs/uuid" }, - "mutation": { - "oneOf": [ - { "$ref": "#/$defs/filePutMutation" }, - { "$ref": "#/$defs/fileMoveMutation" }, - { "$ref": "#/$defs/fileDeleteMutation" } - ] - }, - "current": { "$ref": "#/$defs/fileDescriptor" }, - "current_revision": { "type": "string", "minLength": 1 } - } - }, - "fileReceipt": { - "oneOf": [ - { - "type": "object", - "additionalProperties": false, - "required": ["mutation_id", "status", "sequence"], - "properties": { - "mutation_id": { "$ref": "#/$defs/uuid" }, - "status": { "enum": ["file_applied", "file_previously_applied"] }, - "sequence": { "type": "integer", "minimum": 1 }, - "file": { "$ref": "#/$defs/fileDescriptor" } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": ["mutation_id", "status", "conflict"], - "properties": { - "mutation_id": { "$ref": "#/$defs/uuid" }, - "status": { "const": "file_conflicted" }, - "conflict": { "$ref": "#/$defs/fileConflict" } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": ["mutation_id", "status", "error"], - "properties": { - "mutation_id": { "$ref": "#/$defs/uuid" }, - "status": { "const": "file_rejected" }, - "error": { - "type": "object", - "additionalProperties": false, - "required": ["code", "message"], - "properties": { - "code": { "type": "string", "minLength": 1 }, - "message": { "type": "string" } - } - } - } - } - ] - }, - "receipt": { - "oneOf": [ - { "$ref": "#/$defs/recordReceipt" }, - { "$ref": "#/$defs/fileReceipt" } - ] - } - } -} diff --git a/public/contracts/artifacts/contracts/mdbase.comment/1.0.0.md b/public/contracts/artifacts/contracts/mdbase.comment/1.0.0.md deleted file mode 100644 index fa7df1e..0000000 --- a/public/contracts/artifacts/contracts/mdbase.comment/1.0.0.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -kind: mdbase.contract -contract_type: record -id: mdbase.comment -version: 1.0.0 -name: Comment -description: Comments, replies and suggested edits anchored to text in Markdown records. -record_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.comment/1.0.0.schema.json ---- - -# Comment - -A comment is its own record, never markup inside the commented record. The -commented record's Markdown stays exactly as its author wrote it, and comments -can be queried, linked to and validated like any other record. The comment's -Markdown body is its text; a link to a person in that text is a mention. - -## Threads - -The first comment of a thread has no `in_reply_to`. It carries the thread's -anchor (`target`) and state (`status`, `resolved_by`, `resolved_at`). Each reply -is a separate record whose `in_reply_to` links to that first comment, so two -people replying at once write two records and never conflict. Replies repeat -the thread's `document`. Order a thread's replies by `created_at`. - -Refer to records only with ordinary mdbase links: `document` to the commented -record, `in_reply_to` to the first comment, `created_by` and `resolved_by` to -records implementing `mdbase.person`. Implementing types declare these fields in -`collection.links` so rename reference updates keep them current. Never refer -to an author by name, email or account subject. - -## Anchors - -`target.quote` is the source of truth: `exact` is the anchored text and -`prefix` and `suffix` are the text around it. `target.text_position` records -where the quote was in one revision of the body, in Unicode code points of the -record's Markdown body as stored, after its frontmatter (profile -`markdown-body`). `basis.hash` is `sha256:` and the hex SHA-256 of that body's -UTF-8 bytes. - -To find a thread's text: - -1. When the body at the recorded offsets is still `exact`, use them. -2. Otherwise search the body for `exact`, preferring the occurrence whose - surrounding text best matches `prefix` and `suffix`, then the one nearest - the recorded offsets. -3. When `exact` is not found, the thread is detached. Show it apart from the - text rather than guessing a place. A detached thread is not an error. - -An empty `exact` is an insertion point between `prefix` and `suffix`. A thread -without a `target` is about the whole record. A consumer may rewrite -`text_position` after finding the quote elsewhere; it must not change `quote`. - -## Suggested edits - -A comment with `motivation: editing` suggests replacing the target's quote with -`suggestion.replacement`; an empty replacement suggests deleting it. Accepting -a suggestion first finds the quote as above and must refuse, leaving the -thread open, when the quote cannot be found exactly. It then replaces the -quote in the commented record and resolves the thread with -`suggestion.outcome: accepted`. Rejecting resolves it with `rejected`. - -## Lifecycle - -A comment whose `document` no longer resolves is kept, not deleted: records -can be restored, and the discussion is still collection data. Consumers may -hide such comments. Withdrawing a comment sets `deleted_at` and empties its -body rather than deleting the record, so replies to it keep their thread. - -Authorship links are editable collection data with the same trust as any other -field. They never prove who wrote a comment or grant anyone access. diff --git a/public/contracts/artifacts/contracts/mdbase.contact/1.0.0.md b/public/contracts/artifacts/contracts/mdbase.contact/1.0.0.md deleted file mode 100644 index eca51e4..0000000 --- a/public/contracts/artifacts/contracts/mdbase.contact/1.0.0.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -kind: mdbase.contract -contract_type: record -id: mdbase.contact -version: 1.0.0 -name: Contact -description: A compact application-facing view of a person or organisation. -record_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.contact/1.0.0.schema.json ---- - -# Contact - -This contract exposes the small set of contact semantics commonly shared by -address books, relationship tools, and other applications. A collection keeps -its own field names and may store richer local data; the implementing type maps -only the fields it wants applications to see. - -The contract is deliberately not an interchange format. Exporters can convert -this view to JSContact, vCard, or another wire representation without requiring -Markdown records to store that representation directly. diff --git a/public/contracts/artifacts/contracts/mdbase.jscontact.card/2.0.0.md b/public/contracts/artifacts/contracts/mdbase.jscontact.card/2.0.0.md deleted file mode 100644 index 20e00c0..0000000 --- a/public/contracts/artifacts/contracts/mdbase.jscontact.card/2.0.0.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -kind: mdbase.contract -contract_type: record -id: mdbase.jscontact.card -version: 2.0.0 -name: JSContact Card 2.0 core -description: A strict, portable core profile of an IETF JSContact 2.0 Card. -record_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.jscontact.card/2.0.0.schema.json -x-standard: - name: JSContact - version: "2.0" - scope: Strict core profile covering the Card envelope, names, email addresses, phones, organizations, and notes. - references: - - https://www.rfc-editor.org/rfc/rfc9553.html - - https://www.rfc-editor.org/rfc/rfc9982.html ---- - -# JSContact Card 2.0 core - -This contract provides a deliberately bounded JSContact Card representation -for interoperable contact records. It follows JSContact 2.0, including the -optional `uid` introduced by RFC 9982. - -The profile accepts a strict subset of JSContact properties. It is not an -official IETF JSON Schema and does not claim to validate every JSContact -extension or conditional semantic rule. - diff --git a/public/contracts/artifacts/contracts/mdbase.person/1.0.0.md b/public/contracts/artifacts/contracts/mdbase.person/1.0.0.md deleted file mode 100644 index a029a53..0000000 --- a/public/contracts/artifacts/contracts/mdbase.person/1.0.0.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -kind: mdbase.contract -contract_type: record -id: mdbase.person -version: 1.0.0 -name: Person -description: A portable person reference with editable account identity associations. -record_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.person/1.0.0.schema.json ---- - -# Person - -A person is collection data, independent of an account or collection membership. -Applications reference the stable `id`, not a name, file path, email address, -account subject, or membership ID. Collections choose their own local type and -field names through explicit `implements` mappings. - -`name` is a collection-owned display label. `identities` optionally associates -this person with one or more accounts through issuer/subject pairs. A person -without a Connect account is valid. The same record can travel between hosted, -relay, local, and exported collections without rewriting its identity references. - -## Identity matching - -An identity service supplies the authenticated caller's issuer and subject. -Subjects are opaque, account-wide identifiers, stable across email changes, -collection memberships, and removal/rejoining. Different identity issuers may -use the same subject; both fields must match exactly. Consumers must not trim, -case-fold, resolve redirects, or otherwise normalize either field when matching. -Copy the issuer value supplied by the service, including its trailing-slash -convention. Never derive the issuer from the current collection authority URL. -HTTP issuers support explicitly configured development and self-hosted instances; -production deployments should use HTTPS. - -An application resolves an identity across all implementing person records: - -- No matching person: unlinked, not anonymous authentication and not an error. -- Exactly one matching record with an unambiguous person ID: linked. -- Multiple matching records, or multiple records with that person's ID: - ambiguous. Do not pick the first match, merge records, or overwrite a link. - -A partial or failed query cannot establish that a match is unique. Cross-record -uniqueness is a collection/application invariant, not something this JSON Schema -can prove. Consumers must handle ambiguity even if a starter type has a local -uniqueness constraint: several local types can implement this contract. - -## Editable data, not security authority - -Identity associations have exactly the same trust as other editable collection -data. Editing one may change an application's "Assigned to me" view. It must -never change authentication, membership, permissions, authenticated audit -attribution, or proof of identity to another service. Schema conformance proves -shape, not that an identity association is truthful. - -"Link this person to me" is an ordinary record update using the authenticated -caller's identity. Never infer a link from a matching email or display name. -Membership and current account display names come from the identity service, -not frontmatter. A person association must never invite someone or grant access. - -## Lifecycle and portability - -Renaming or moving a record does not change its ID. Removing a member does not -delete their person record or task assignments. Deleting a record leaves -unresolved references; consumers should preserve these rather than silently -unassigning work. Reusing an ID for a different person changes every reference -and should not be treated as a routine rename. - -Copying records preserves account associations, but never copies collection -access. Multiple issuer/subject entries let one person represent accounts at -different identity services. Account deletion or an issuer migration may leave -an unresolved identity association; do not automatically rebind it to a newly -created account. Stored names and identity references remain collection data -subject to that collection's retention and editing policies. - -Account-wide subjects deliberately allow correlation across collections. This -is a portability trade-off, not an anonymity guarantee. Never store passwords, -access tokens, refresh tokens, or other credentials in these fields. - -## Contact information - -This contract does not define another address book. A local type can also -implement `mdbase.contact` for compact contact semantics, or -`mdbase.jscontact.card` when it intentionally stores that interchange shape. -The starter Person type implements both Person and Contact. diff --git a/public/contracts/artifacts/contracts/mdbase.person/2.0.0.md b/public/contracts/artifacts/contracts/mdbase.person/2.0.0.md deleted file mode 100644 index 166b75a..0000000 --- a/public/contracts/artifacts/contracts/mdbase.person/2.0.0.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -kind: mdbase.contract -contract_type: record -id: mdbase.person -version: 2.0.0 -name: Person -description: A person record, referenced by links, with editable account identity associations. -record_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.person/2.0.0.schema.json ---- - -# Person - -A person is collection data, independent of an account or collection membership. -Other records refer to a person with an ordinary mdbase link to the person's -record, such as `"[[Alex Rivera]]"`, declared in the referring type's -`collection.links` and resolved with the collection's own link rules. Never -refer to a person by name text, email address, account subject, or membership -ID. Collections choose their own local type and field names through explicit -`implements` mappings. - -Version 2.0.0 removes the separate `id` field of 1.0.0. Link resolution already -identifies the record, and rename reference updates keep links current, so a -second identifier only created a way for the two to disagree. - -`name` is a collection-owned display label. `identities` optionally associates -this person with one or more accounts through issuer/subject pairs. A person -without a Connect account is valid. The same record can travel between hosted, -relay, local, and exported collections without rewriting its identity references. - -## Identity matching - -An identity service supplies the authenticated caller's issuer and subject. -Subjects are opaque, account-wide identifiers, stable across email changes, -collection memberships, and removal/rejoining. Different identity issuers may -use the same subject; both fields must match exactly. Consumers must not trim, -case-fold, resolve redirects, or otherwise normalize either field when matching. -Copy the issuer value supplied by the service, including its trailing-slash -convention. Never derive the issuer from the current collection authority URL. -HTTP issuers support explicitly configured development and self-hosted instances; -production deployments should use HTTPS. - -An application resolves an identity across all implementing person records: - -- No matching person: unlinked, not anonymous authentication and not an error. -- Exactly one matching record: linked. -- Multiple matching records: ambiguous. Do not pick the first match, merge - records, or overwrite a link. - -A partial or failed query cannot establish that a match is unique. Consumers -must handle ambiguity: several records, possibly of several local types, can -claim the same identity. - -## Editable data, not security authority - -Identity associations have exactly the same trust as other editable collection -data. Editing one may change an application's "Assigned to me" view. It must -never change authentication, membership, permissions, authenticated audit -attribution, or proof of identity to another service. Schema conformance proves -shape, not that an identity association is truthful. - -"Link this person to me" is an ordinary record update using the authenticated -caller's identity. Never infer a link from a matching email or display name. -Membership and current account display names come from the identity service, -not frontmatter. A person association must never invite someone or grant access. - -## Lifecycle and portability - -Renaming or moving a person record through mdbase or an editor that updates -references keeps links to it current. Removing a member does not delete their -person record or task assignments. Deleting a record leaves unresolved links; -consumers should preserve these rather than silently unassigning work. Giving a -different person's record the old record's name or path redirects existing -links and should not be treated as a routine rename. - -Copying records preserves account associations, but never copies collection -access. Multiple issuer/subject entries let one person represent accounts at -different identity services. Account deletion or an issuer migration may leave -an unresolved identity association; do not automatically rebind it to a newly -created account. Stored names and identity references remain collection data -subject to that collection's retention and editing policies. - -Account-wide subjects deliberately allow correlation across collections. This -is a portability trade-off, not an anonymity guarantee. Never store passwords, -access tokens, refresh tokens, or other credentials in these fields. - -## Contact information - -This contract does not define another address book. A local type can also -implement `mdbase.contact` for compact contact semantics, or -`mdbase.jscontact.card` when it intentionally stores that interchange shape. -The starter Person type implements both Person and Contact. diff --git a/public/contracts/artifacts/contracts/mdbase.record.created/1.0.0.md b/public/contracts/artifacts/contracts/mdbase.record.created/1.0.0.md deleted file mode 100644 index 1a1c06c..0000000 --- a/public/contracts/artifacts/contracts/mdbase.record.created/1.0.0.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -kind: mdbase.contract -contract_type: event -id: mdbase.record.created -version: 1.0.0 -name: Record created -description: Published after a record is created and derived collection state is consistent. -data_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.record.created/1.0.0.schema.json ---- - -# Record created - -This built-in is an ordinary, inspectable contract artifact. Runtime exchange -uses the mdbase interoperability profile unchanged. diff --git a/public/contracts/artifacts/contracts/mdbase.record.deleted/1.0.0.md b/public/contracts/artifacts/contracts/mdbase.record.deleted/1.0.0.md deleted file mode 100644 index 3965bf9..0000000 --- a/public/contracts/artifacts/contracts/mdbase.record.deleted/1.0.0.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -kind: mdbase.contract -contract_type: event -id: mdbase.record.deleted -version: 1.0.0 -name: Record deleted -description: Published after a record is deleted and derived collection state is consistent. -data_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.record.deleted/1.0.0.schema.json ---- - -# Record deleted - -This built-in is an ordinary, inspectable contract artifact. Runtime exchange -uses the mdbase interoperability profile unchanged. diff --git a/public/contracts/artifacts/contracts/mdbase.record.modified/1.0.0.md b/public/contracts/artifacts/contracts/mdbase.record.modified/1.0.0.md deleted file mode 100644 index 2ccff27..0000000 --- a/public/contracts/artifacts/contracts/mdbase.record.modified/1.0.0.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -kind: mdbase.contract -contract_type: event -id: mdbase.record.modified -version: 1.0.0 -name: Record modified -description: Published after a record is modified and derived collection state is consistent. -data_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.record.modified/1.0.0.schema.json ---- - -# Record modified - -This built-in is an ordinary, inspectable contract artifact. Runtime exchange -uses the mdbase interoperability profile unchanged. diff --git a/public/contracts/artifacts/contracts/mdbase.record.renamed/1.0.0.md b/public/contracts/artifacts/contracts/mdbase.record.renamed/1.0.0.md deleted file mode 100644 index bbeef56..0000000 --- a/public/contracts/artifacts/contracts/mdbase.record.renamed/1.0.0.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -kind: mdbase.contract -contract_type: event -id: mdbase.record.renamed -version: 1.0.0 -name: Record renamed -description: Published after a record is renamed and derived collection state is consistent. -data_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.record.renamed/1.0.0.schema.json ---- - -# Record renamed - -This built-in is an ordinary, inspectable contract artifact. Runtime exchange -uses the mdbase interoperability profile unchanged. diff --git a/public/contracts/artifacts/contracts/mdbase.runtime.action-attempt/1.0.0.md b/public/contracts/artifacts/contracts/mdbase.runtime.action-attempt/1.0.0.md deleted file mode 100644 index db55d3a..0000000 --- a/public/contracts/artifacts/contracts/mdbase.runtime.action-attempt/1.0.0.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -kind: mdbase.contract -contract_type: record -id: mdbase.runtime.action-attempt -version: 1.0.0 -name: Durable action attempt -description: Durable invocation intent and outcome evidence using the shared interoperability envelope. -record_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.runtime.action-attempt/1.0.0.schema.json ---- - -# Durable action attempt - -Durable invocation intent and outcome evidence using the shared interoperability envelope. - -This artifact is passive. Installing it or a type that implements it grants no -authority to execute workflows or invoke providers. diff --git a/public/contracts/artifacts/contracts/mdbase.runtime.capability-grant/1.0.0.md b/public/contracts/artifacts/contracts/mdbase.runtime.capability-grant/1.0.0.md deleted file mode 100644 index 5119e27..0000000 --- a/public/contracts/artifacts/contracts/mdbase.runtime.capability-grant/1.0.0.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -kind: mdbase.contract -contract_type: record -id: mdbase.runtime.capability-grant -version: 1.0.0 -name: Capability grant evidence -description: A materialized authorization grant scoped independently from contract conformance. -record_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.runtime.capability-grant/1.0.0.schema.json ---- - -# Capability grant evidence - -A materialized authorization grant scoped independently from contract conformance. - -This artifact is passive. Installing it or a type that implements it grants no -authority to execute workflows or invoke providers. diff --git a/public/contracts/artifacts/contracts/mdbase.runtime.checkpoint/1.0.0.md b/public/contracts/artifacts/contracts/mdbase.runtime.checkpoint/1.0.0.md deleted file mode 100644 index 2f2fb16..0000000 --- a/public/contracts/artifacts/contracts/mdbase.runtime.checkpoint/1.0.0.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -kind: mdbase.contract -contract_type: record -id: mdbase.runtime.checkpoint -version: 1.0.0 -name: Runtime checkpoint -description: A durable, lease-safe workflow continuation. -record_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.runtime.checkpoint/1.0.0.schema.json ---- - -# Runtime checkpoint - -A durable, lease-safe workflow continuation. - -This artifact is passive. Installing it or a type that implements it grants no -authority to execute workflows or invoke providers. diff --git a/public/contracts/artifacts/contracts/mdbase.runtime.dead-letter/1.0.0.md b/public/contracts/artifacts/contracts/mdbase.runtime.dead-letter/1.0.0.md deleted file mode 100644 index 15f2466..0000000 --- a/public/contracts/artifacts/contracts/mdbase.runtime.dead-letter/1.0.0.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -kind: mdbase.contract -contract_type: record -id: mdbase.runtime.dead-letter -version: 1.0.0 -name: Runtime dead letter -description: Retained event or action evidence that cannot be processed safely. -record_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.runtime.dead-letter/1.0.0.schema.json ---- - -# Runtime dead letter - -Retained event or action evidence that cannot be processed safely. - -This artifact is passive. Installing it or a type that implements it grants no -authority to execute workflows or invoke providers. diff --git a/public/contracts/artifacts/contracts/mdbase.runtime.diagnostic/1.0.0.md b/public/contracts/artifacts/contracts/mdbase.runtime.diagnostic/1.0.0.md deleted file mode 100644 index 82708f1..0000000 --- a/public/contracts/artifacts/contracts/mdbase.runtime.diagnostic/1.0.0.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -kind: mdbase.contract -contract_type: record -id: mdbase.runtime.diagnostic -version: 1.0.0 -name: Runtime diagnostic -description: A machine-readable durable runtime diagnostic. -record_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.runtime.diagnostic/1.0.0.schema.json ---- - -# Runtime diagnostic - -A machine-readable durable runtime diagnostic. - -This artifact is passive. Installing it or a type that implements it grants no -authority to execute workflows or invoke providers. diff --git a/public/contracts/artifacts/contracts/mdbase.runtime.policy/1.0.0.md b/public/contracts/artifacts/contracts/mdbase.runtime.policy/1.0.0.md deleted file mode 100644 index 9845a29..0000000 --- a/public/contracts/artifacts/contracts/mdbase.runtime.policy/1.0.0.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -kind: mdbase.contract -contract_type: record -id: mdbase.runtime.policy -version: 1.0.0 -name: Runtime policy -description: Local authorization, executor, limit, and provider-selection policy. -record_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.runtime.policy/1.0.0.schema.json ---- - -# Runtime policy - -Local authorization, executor, limit, and provider-selection policy. - -This artifact is passive. Installing it or a type that implements it grants no -authority to execute workflows or invoke providers. diff --git a/public/contracts/artifacts/contracts/mdbase.runtime.provider-registration/1.0.0.md b/public/contracts/artifacts/contracts/mdbase.runtime.provider-registration/1.0.0.md deleted file mode 100644 index c2af919..0000000 --- a/public/contracts/artifacts/contracts/mdbase.runtime.provider-registration/1.0.0.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -kind: mdbase.contract -contract_type: record -id: mdbase.runtime.provider-registration -version: 1.0.0 -name: Provider registration evidence -description: An optional audit snapshot of a verified interoperability declaration; it never activates code. -record_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.runtime.provider-registration/1.0.0.schema.json ---- - -# Provider registration evidence - -An optional audit snapshot of a verified interoperability declaration; it never activates code. - -This artifact is passive. Installing it or a type that implements it grants no -authority to execute workflows or invoke providers. diff --git a/public/contracts/artifacts/contracts/mdbase.runtime.run.cancel/1.0.0.md b/public/contracts/artifacts/contracts/mdbase.runtime.run.cancel/1.0.0.md deleted file mode 100644 index 1f6af38..0000000 --- a/public/contracts/artifacts/contracts/mdbase.runtime.run.cancel/1.0.0.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -kind: mdbase.contract -contract_type: action -id: mdbase.runtime.run.cancel -version: 1.0.0 -name: Cancel durable runtime run -description: Request cooperative cancellation of one durable runtime run. -input_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.runtime.run.cancel/1.0.0.schema.json -output_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.runtime.run.cancel/1.0.0.output.schema.json -behavior: - idempotency: required - cancellation: none ---- - -# Cancel durable runtime run - -This built-in is an ordinary, inspectable contract artifact. Runtime exchange -uses the mdbase interoperability profile unchanged. diff --git a/public/contracts/artifacts/contracts/mdbase.runtime.run/1.0.0.md b/public/contracts/artifacts/contracts/mdbase.runtime.run/1.0.0.md deleted file mode 100644 index 2ae260f..0000000 --- a/public/contracts/artifacts/contracts/mdbase.runtime.run/1.0.0.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -kind: mdbase.contract -contract_type: record -id: mdbase.runtime.run -version: 1.0.0 -name: Durable run -description: The durable state and immutable admitted plan for one workflow execution. -record_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.runtime.run/1.0.0.schema.json ---- - -# Durable run - -The durable state and immutable admitted plan for one workflow execution. - -This artifact is passive. Installing it or a type that implements it grants no -authority to execute workflows or invoke providers. diff --git a/public/contracts/artifacts/contracts/mdbase.runtime.timer.fired/1.0.0.md b/public/contracts/artifacts/contracts/mdbase.runtime.timer.fired/1.0.0.md deleted file mode 100644 index 410b93a..0000000 --- a/public/contracts/artifacts/contracts/mdbase.runtime.timer.fired/1.0.0.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -kind: mdbase.contract -contract_type: event -id: mdbase.runtime.timer.fired -version: 1.0.0 -name: Runtime timer fired -description: Published with scheduling evidence and opaque application data when the current generation of a durable timer fires. -data_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.runtime.timer.fired/1.0.0.schema.json ---- - -# Runtime timer fired - -This built-in is an ordinary, inspectable contract artifact. Runtime exchange -uses the mdbase interoperability profile unchanged. diff --git a/public/contracts/artifacts/contracts/mdbase.runtime.timer/1.0.0.md b/public/contracts/artifacts/contracts/mdbase.runtime.timer/1.0.0.md deleted file mode 100644 index 7477f69..0000000 --- a/public/contracts/artifacts/contracts/mdbase.runtime.timer/1.0.0.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -kind: mdbase.contract -contract_type: record -id: mdbase.runtime.timer -version: 1.0.0 -name: Runtime timer -description: A generation-safe one-shot timer that publishes through the interoperability profile. -record_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.runtime.timer/1.0.0.schema.json ---- - -# Runtime timer - -A generation-safe one-shot timer that publishes through the interoperability profile. - -This artifact is passive. Installing it or a type that implements it grants no -authority to execute workflows or invoke providers. diff --git a/public/contracts/artifacts/contracts/mdbase.runtime.workflow/1.0.0.md b/public/contracts/artifacts/contracts/mdbase.runtime.workflow/1.0.0.md deleted file mode 100644 index 30bcc06..0000000 --- a/public/contracts/artifacts/contracts/mdbase.runtime.workflow/1.0.0.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -kind: mdbase.contract -contract_type: record -id: mdbase.runtime.workflow -version: 1.0.0 -name: Durable workflow -description: A portable workflow whose event and action references are resolved and pinned at admission. -record_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.runtime.workflow/1.0.0.schema.json ---- - -# Durable workflow - -A portable workflow whose event and action references are resolved and pinned at admission. - -This artifact is passive. Installing it or a type that implements it grants no -authority to execute workflows or invoke providers. diff --git a/public/contracts/artifacts/contracts/mdbase.view/1.0.0.md b/public/contracts/artifacts/contracts/mdbase.view/1.0.0.md deleted file mode 100644 index 6c014f3..0000000 --- a/public/contracts/artifacts/contracts/mdbase.view/1.0.0.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -kind: mdbase.contract -contract_type: record -id: mdbase.view -version: 1.0.0 -name: Saved view -description: Shared query scope and stable named views executable through the Query profile. -record_schema: - dialect: json-schema-2020-12 - ref: ../../schemas/mdbase.view/1.0.0.schema.json ---- - -# Saved view - -A record exposed through `mdbase.view` stores shared query scope and one or more -stable named views. Each named view resolves to the query model in Chapter 11. -Optional `presentation` metadata is advisory and does not alter headless query -results. - -Implementing this contract is how a collection declares which of its records -are saved views. A tool that advertises `view_records` discovers and executes -views through this contract's type implementations, not through a reserved type -name, path, or frontmatter value. - -This artifact is passive. Implementing it grants no authority to read, execute, -or modify any record. diff --git a/public/contracts/artifacts/contracts/obsidian.base/1.0.0.md b/public/contracts/artifacts/contracts/obsidian.base/1.0.0.md deleted file mode 100644 index 29fd74e..0000000 --- a/public/contracts/artifacts/contracts/obsidian.base/1.0.0.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -kind: mdbase.contract -contract_type: record -id: obsidian.base -version: 1.0.0 -name: Obsidian Base -description: An Obsidian Bases saved-view source stored as a YAML document record. -record_schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - type: object - required: [views] - properties: - filters: {} - formulas: { type: object } - properties: { type: object } - views: - type: array - minItems: 1 - items: { type: object, required: [type], properties: { type: { type: string }, name: { type: string } } } ---- - -# Obsidian Base - -A record exposed through `obsidian.base` is an Obsidian Bases source: global -filters, formulas, property metadata, and one or more views. The schema is -deliberately permissive. Obsidian owns the format and adds keys over time; -unknown keys are preserved and ignored. - -Tools that advertise `obsidian_bases_views` discover and execute these records -through this contract and evaluate them with the Obsidian Bases expression -dialect described in the [Obsidian Bases adapter](https://mdbase.dev/spec/adapters/obsidian-bases). - -This artifact is passive. Implementing it grants no authority to read, execute, -or modify any record. diff --git a/public/contracts/artifacts/contracts/tasknotes.task/0.3.0-rc.3.md b/public/contracts/artifacts/contracts/tasknotes.task/0.3.0-rc.3.md deleted file mode 100644 index 70607e4..0000000 --- a/public/contracts/artifacts/contracts/tasknotes.task/0.3.0-rc.3.md +++ /dev/null @@ -1,479 +0,0 @@ ---- -kind: mdbase.contract -contract_type: record -id: tasknotes.task -version: 0.3.0-rc.3 -name: TaskNotes task -description: Portable task data and behavior defined by tasknotes-spec 0.3.0-rc.3. -record_schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - $id: https://tasknotes.dev/schemas/tasknotes-task.schema.json - title: TaskNotes portable task view - description: The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.3 record contract. - type: object - required: - - status - - dateCreated - additionalProperties: false - properties: - id: - type: string - minLength: 1 - title: - type: string - minLength: 1 - status: - type: string - minLength: 1 - priority: - type: string - minLength: 1 - due: - anyOf: - - type: string - format: date - - type: string - format: date-time - scheduled: - anyOf: - - type: string - format: date - - type: string - format: date-time - contexts: - type: array - items: - type: string - projects: - type: array - items: - type: string - attachments: - type: array - uniqueItems: true - items: - type: string - minLength: 1 - timeEstimate: - type: integer - minimum: 0 - completedDate: - type: string - format: date - dateCreated: - type: string - format: date-time - dateModified: - type: string - format: date-time - recurrence: - type: string - recurrenceAnchor: - enum: - - scheduled - - completion - recurrenceParent: - type: string - occurrenceDate: - type: string - format: date - occurrenceMaterialization: - enum: - - manual - - on_completion - - rolling - occurrenceNextTrigger: - enum: - - completion - - completion_or_skip - occurrenceTemplate: - type: string - occurrencePastHorizon: - type: string - occurrenceFutureHorizon: - type: string - tags: - type: array - items: - type: string - timeEntries: - type: array - items: - type: object - reminders: - type: array - items: - type: object - blockedBy: - type: array - items: - type: object - completeInstances: - type: array - items: - type: string - format: date - skippedInstances: - type: array - items: - type: string - format: date - icsEventId: - type: array - items: - type: string - googleCalendarEventId: - type: string - googleCalendarExceptionEventId: - type: string - googleCalendarExceptionOriginalScheduled: - type: string - format: date - googleCalendarMovedOriginalDates: - type: array - items: - type: string - format: date - sortOrder: - type: string -binding_schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - $id: https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json - title: TaskNotes task data-contract binding - description: Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3. - type: object - required: - - profiles - - capabilities - - title - - status - - priority - - recurrence - - occurrences - - links - - archive - - time_tracking - - templating - properties: - profiles: - type: array - minItems: 1 - uniqueItems: true - items: - enum: - - core-lite - - recurrence - - templating - - materialized-occurrences - - extended - capabilities: - type: array - uniqueItems: true - items: - enum: - - dependencies - - reminders - - attachments - - links - - time-tracking - - materialized-occurrences - - rename - - archive - - batch - - concurrency - - dry-run - - migration - - templating - title: - $ref: "#/$defs/titlePolicy" - status: - $ref: "#/$defs/statusPolicy" - priority: - $ref: "#/$defs/priorityPolicy" - recurrence: - $ref: "#/$defs/recurrencePolicy" - occurrences: - $ref: "#/$defs/occurrencePolicy" - links: - $ref: "#/$defs/linkPolicy" - archive: - $ref: "#/$defs/archivePolicy" - time_tracking: - $ref: "#/$defs/timeTrackingPolicy" - templating: - $ref: "#/$defs/templatingPolicy" - nlp: - $ref: "#/$defs/nlpPolicy" - additionalProperties: false - $defs: - nonEmptyString: - type: string - minLength: 1 - stringSet: - type: array - uniqueItems: true - items: - $ref: "#/$defs/nonEmptyString" - titlePolicy: - type: object - required: - - storage - properties: - storage: - enum: - - filename - - frontmatter - filename_format: - enum: - - title - - zettel - - timestamp - - uuid - - custom - custom_filename_template: - $ref: "#/$defs/nonEmptyString" - allOf: - - if: - properties: - filename_format: - const: custom - required: - - filename_format - then: - properties: - custom_filename_template: - $ref: "#/$defs/nonEmptyString" - required: - - custom_filename_template - additionalProperties: true - statusDefinition: - type: object - required: - - value - - label - - color - - is_completed - - is_skipped - - exclude_from_cycle - - order - - auto_archive - - auto_archive_delay_minutes - properties: - value: - $ref: "#/$defs/nonEmptyString" - label: - type: string - color: - type: string - icon: - $ref: "#/$defs/nonEmptyString" - is_completed: - type: boolean - is_skipped: - type: boolean - exclude_from_cycle: - type: boolean - next_status: - $ref: "#/$defs/nonEmptyString" - order: - type: number - auto_archive: - type: boolean - auto_archive_delay_minutes: - type: number - minimum: 0 - additionalProperties: true - statusPolicy: - type: object - required: - - values - - default - - completed_values - - definitions - properties: - values: - $ref: "#/$defs/stringSet" - default: - $ref: "#/$defs/nonEmptyString" - completed_values: - $ref: "#/$defs/stringSet" - skipped_values: - $ref: "#/$defs/stringSet" - default_skipped: - $ref: "#/$defs/nonEmptyString" - definitions: - type: array - items: - $ref: "#/$defs/statusDefinition" - additionalProperties: false - priorityDefinition: - type: object - required: - - value - - label - - color - - weight - properties: - value: - $ref: "#/$defs/nonEmptyString" - label: - type: string - color: - type: string - icon: - $ref: "#/$defs/nonEmptyString" - weight: - type: number - additionalProperties: true - priorityPolicy: - type: object - required: - - values - - default - - definitions - properties: - values: - $ref: "#/$defs/stringSet" - default: - $ref: "#/$defs/nonEmptyString" - definitions: - type: array - items: - $ref: "#/$defs/priorityDefinition" - additionalProperties: false - recurrencePolicy: - type: object - required: - - syntax - - maintain_due_date_offset - - reset_body_checkboxes - properties: - syntax: - const: tasknotes - maintain_due_date_offset: - type: boolean - reset_body_checkboxes: - type: boolean - additionalProperties: false - occurrencePolicy: - type: object - required: - - identity_roles - - default_materialization - - default_next_trigger - properties: - identity_roles: - const: - - recurrenceParent - - occurrenceDate - default_materialization: - enum: - - manual - - on_completion - - rolling - default_next_trigger: - enum: - - completion - - completion_or_skip - past_horizon: - $ref: "#/$defs/nonEmptyString" - future_horizon: - $ref: "#/$defs/nonEmptyString" - additionalProperties: false - linkPolicy: - type: object - required: - - accepted_formats - - write_format - properties: - accepted_formats: - type: array - minItems: 1 - uniqueItems: true - items: - enum: - - wikilink - - markdown - write_format: - enum: - - wikilink - - markdown - additionalProperties: false - archivePolicy: - type: object - required: - - archived_tag - - move_on_archive - properties: - archived_tag: - $ref: "#/$defs/nonEmptyString" - move_on_archive: - type: boolean - folder: - $ref: "#/$defs/nonEmptyString" - additionalProperties: false - timeTrackingPolicy: - type: object - required: - - auto_stop_on_complete - properties: - auto_stop_on_complete: - type: boolean - additionalProperties: false - templatingPolicy: - type: object - required: - - enabled - - occurrence_enabled - properties: - enabled: - type: boolean - template_path: - $ref: "#/$defs/nonEmptyString" - occurrence_enabled: - type: boolean - occurrence_template_path: - $ref: "#/$defs/nonEmptyString" - failure_mode: - enum: - - error - - warning_fallback - unknown_variable_policy: - enum: - - preserve - - empty - additionalProperties: false - nlpTrigger: - type: object - required: - - property_id - - trigger - - enabled - properties: - property_id: - $ref: "#/$defs/nonEmptyString" - trigger: - $ref: "#/$defs/nonEmptyString" - enabled: - type: boolean - additionalProperties: false - nlpPolicy: - type: object - required: - - triggers - properties: - triggers: - type: array - items: - $ref: "#/$defs/nlpTrigger" - additionalProperties: false ---- - -# TaskNotes task contract - -Types implement this contract through `implements`; applications consume -the normalized contract view rather than assuming frontmatter names. diff --git a/public/contracts/artifacts/contracts/tasknotes.task/0.3.0-rc.4.md b/public/contracts/artifacts/contracts/tasknotes.task/0.3.0-rc.4.md deleted file mode 100644 index 60f0ae0..0000000 --- a/public/contracts/artifacts/contracts/tasknotes.task/0.3.0-rc.4.md +++ /dev/null @@ -1,487 +0,0 @@ ---- -kind: mdbase.contract -contract_type: record -id: tasknotes.task -version: 0.3.0-rc.4 -name: TaskNotes task -description: Portable task data and behavior defined by tasknotes-spec 0.3.0-rc.4. -record_schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - $id: https://tasknotes.dev/schemas/tasknotes-task.schema.json - title: TaskNotes portable task view - description: The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.4 record contract. - type: object - required: - - status - - dateCreated - additionalProperties: false - properties: - id: - type: string - minLength: 1 - title: - type: string - minLength: 1 - status: - type: string - minLength: 1 - priority: - type: string - minLength: 1 - due: - anyOf: - - type: string - format: date - - type: string - format: date-time - scheduled: - anyOf: - - type: string - format: date - - type: string - format: date-time - contexts: - type: array - items: - type: string - projects: - type: array - items: - type: string - assignees: - type: array - uniqueItems: true - items: - type: string - minLength: 1 - pattern: \S - description: Stable mdbase.person IDs. These references never grant collection access. - attachments: - type: array - uniqueItems: true - items: - type: string - minLength: 1 - timeEstimate: - type: integer - minimum: 0 - completedDate: - type: string - format: date - dateCreated: - type: string - format: date-time - dateModified: - type: string - format: date-time - recurrence: - type: string - recurrenceAnchor: - enum: - - scheduled - - completion - recurrenceParent: - type: string - occurrenceDate: - type: string - format: date - occurrenceMaterialization: - enum: - - manual - - on_completion - - rolling - occurrenceNextTrigger: - enum: - - completion - - completion_or_skip - occurrenceTemplate: - type: string - occurrencePastHorizon: - type: string - occurrenceFutureHorizon: - type: string - tags: - type: array - items: - type: string - timeEntries: - type: array - items: - type: object - reminders: - type: array - items: - type: object - blockedBy: - type: array - items: - type: object - completeInstances: - type: array - items: - type: string - format: date - skippedInstances: - type: array - items: - type: string - format: date - icsEventId: - type: array - items: - type: string - googleCalendarEventId: - type: string - googleCalendarExceptionEventId: - type: string - googleCalendarExceptionOriginalScheduled: - type: string - format: date - googleCalendarMovedOriginalDates: - type: array - items: - type: string - format: date - sortOrder: - type: string -binding_schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - $id: https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json - title: TaskNotes task data-contract binding - description: Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3. - type: object - required: - - profiles - - capabilities - - title - - status - - priority - - recurrence - - occurrences - - links - - archive - - time_tracking - - templating - properties: - profiles: - type: array - minItems: 1 - uniqueItems: true - items: - enum: - - core-lite - - recurrence - - templating - - materialized-occurrences - - extended - capabilities: - type: array - uniqueItems: true - items: - enum: - - dependencies - - reminders - - attachments - - links - - time-tracking - - materialized-occurrences - - rename - - archive - - batch - - concurrency - - dry-run - - migration - - templating - title: - $ref: "#/$defs/titlePolicy" - status: - $ref: "#/$defs/statusPolicy" - priority: - $ref: "#/$defs/priorityPolicy" - recurrence: - $ref: "#/$defs/recurrencePolicy" - occurrences: - $ref: "#/$defs/occurrencePolicy" - links: - $ref: "#/$defs/linkPolicy" - archive: - $ref: "#/$defs/archivePolicy" - time_tracking: - $ref: "#/$defs/timeTrackingPolicy" - templating: - $ref: "#/$defs/templatingPolicy" - nlp: - $ref: "#/$defs/nlpPolicy" - additionalProperties: false - $defs: - nonEmptyString: - type: string - minLength: 1 - stringSet: - type: array - uniqueItems: true - items: - $ref: "#/$defs/nonEmptyString" - titlePolicy: - type: object - required: - - storage - properties: - storage: - enum: - - filename - - frontmatter - filename_format: - enum: - - title - - zettel - - timestamp - - uuid - - custom - custom_filename_template: - $ref: "#/$defs/nonEmptyString" - allOf: - - if: - properties: - filename_format: - const: custom - required: - - filename_format - then: - properties: - custom_filename_template: - $ref: "#/$defs/nonEmptyString" - required: - - custom_filename_template - additionalProperties: true - statusDefinition: - type: object - required: - - value - - label - - color - - is_completed - - is_skipped - - exclude_from_cycle - - order - - auto_archive - - auto_archive_delay_minutes - properties: - value: - $ref: "#/$defs/nonEmptyString" - label: - type: string - color: - type: string - icon: - $ref: "#/$defs/nonEmptyString" - is_completed: - type: boolean - is_skipped: - type: boolean - exclude_from_cycle: - type: boolean - next_status: - $ref: "#/$defs/nonEmptyString" - order: - type: number - auto_archive: - type: boolean - auto_archive_delay_minutes: - type: number - minimum: 0 - additionalProperties: true - statusPolicy: - type: object - required: - - values - - default - - completed_values - - definitions - properties: - values: - $ref: "#/$defs/stringSet" - default: - $ref: "#/$defs/nonEmptyString" - completed_values: - $ref: "#/$defs/stringSet" - skipped_values: - $ref: "#/$defs/stringSet" - default_skipped: - $ref: "#/$defs/nonEmptyString" - definitions: - type: array - items: - $ref: "#/$defs/statusDefinition" - additionalProperties: false - priorityDefinition: - type: object - required: - - value - - label - - color - - weight - properties: - value: - $ref: "#/$defs/nonEmptyString" - label: - type: string - color: - type: string - icon: - $ref: "#/$defs/nonEmptyString" - weight: - type: number - additionalProperties: true - priorityPolicy: - type: object - required: - - values - - default - - definitions - properties: - values: - $ref: "#/$defs/stringSet" - default: - $ref: "#/$defs/nonEmptyString" - definitions: - type: array - items: - $ref: "#/$defs/priorityDefinition" - additionalProperties: false - recurrencePolicy: - type: object - required: - - syntax - - maintain_due_date_offset - - reset_body_checkboxes - properties: - syntax: - const: tasknotes - maintain_due_date_offset: - type: boolean - reset_body_checkboxes: - type: boolean - additionalProperties: false - occurrencePolicy: - type: object - required: - - identity_roles - - default_materialization - - default_next_trigger - properties: - identity_roles: - const: - - recurrenceParent - - occurrenceDate - default_materialization: - enum: - - manual - - on_completion - - rolling - default_next_trigger: - enum: - - completion - - completion_or_skip - past_horizon: - $ref: "#/$defs/nonEmptyString" - future_horizon: - $ref: "#/$defs/nonEmptyString" - additionalProperties: false - linkPolicy: - type: object - required: - - accepted_formats - - write_format - properties: - accepted_formats: - type: array - minItems: 1 - uniqueItems: true - items: - enum: - - wikilink - - markdown - write_format: - enum: - - wikilink - - markdown - additionalProperties: false - archivePolicy: - type: object - required: - - archived_tag - - move_on_archive - properties: - archived_tag: - $ref: "#/$defs/nonEmptyString" - move_on_archive: - type: boolean - folder: - $ref: "#/$defs/nonEmptyString" - additionalProperties: false - timeTrackingPolicy: - type: object - required: - - auto_stop_on_complete - properties: - auto_stop_on_complete: - type: boolean - additionalProperties: false - templatingPolicy: - type: object - required: - - enabled - - occurrence_enabled - properties: - enabled: - type: boolean - template_path: - $ref: "#/$defs/nonEmptyString" - occurrence_enabled: - type: boolean - occurrence_template_path: - $ref: "#/$defs/nonEmptyString" - failure_mode: - enum: - - error - - warning_fallback - unknown_variable_policy: - enum: - - preserve - - empty - additionalProperties: false - nlpTrigger: - type: object - required: - - property_id - - trigger - - enabled - properties: - property_id: - $ref: "#/$defs/nonEmptyString" - trigger: - $ref: "#/$defs/nonEmptyString" - enabled: - type: boolean - additionalProperties: false - nlpPolicy: - type: object - required: - - triggers - properties: - triggers: - type: array - items: - $ref: "#/$defs/nlpTrigger" - additionalProperties: false ---- - -# TaskNotes task contract - -Types implement this contract through `implements`; applications consume -the normalized contract view rather than assuming frontmatter names. diff --git a/public/contracts/artifacts/contracts/tasknotes.task/0.3.0-rc.5.md b/public/contracts/artifacts/contracts/tasknotes.task/0.3.0-rc.5.md deleted file mode 100644 index 1f0a626..0000000 --- a/public/contracts/artifacts/contracts/tasknotes.task/0.3.0-rc.5.md +++ /dev/null @@ -1,487 +0,0 @@ ---- -kind: mdbase.contract -contract_type: record -id: tasknotes.task -version: 0.3.0-rc.5 -name: TaskNotes task -description: Portable task data and behavior defined by tasknotes-spec 0.3.0-rc.5. -record_schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - $id: https://tasknotes.dev/schemas/tasknotes-task.schema.json - title: TaskNotes portable task view - description: The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.5 record contract. - type: object - required: - - status - - dateCreated - additionalProperties: false - properties: - id: - type: string - minLength: 1 - title: - type: string - minLength: 1 - status: - type: string - minLength: 1 - priority: - type: string - minLength: 1 - due: - anyOf: - - type: string - format: date - - type: string - format: date-time - scheduled: - anyOf: - - type: string - format: date - - type: string - format: date-time - contexts: - type: array - items: - type: string - projects: - type: array - items: - type: string - assignees: - type: array - uniqueItems: true - items: - type: string - minLength: 1 - pattern: \S - description: Links to records implementing mdbase.person, such as [[Alex Rivera]]. Implementing types declare this field in collection.links. These references never grant collection access. - attachments: - type: array - uniqueItems: true - items: - type: string - minLength: 1 - timeEstimate: - type: integer - minimum: 0 - completedDate: - type: string - format: date - dateCreated: - type: string - format: date-time - dateModified: - type: string - format: date-time - recurrence: - type: string - recurrenceAnchor: - enum: - - scheduled - - completion - recurrenceParent: - type: string - occurrenceDate: - type: string - format: date - occurrenceMaterialization: - enum: - - manual - - on_completion - - rolling - occurrenceNextTrigger: - enum: - - completion - - completion_or_skip - occurrenceTemplate: - type: string - occurrencePastHorizon: - type: string - occurrenceFutureHorizon: - type: string - tags: - type: array - items: - type: string - timeEntries: - type: array - items: - type: object - reminders: - type: array - items: - type: object - blockedBy: - type: array - items: - type: object - completeInstances: - type: array - items: - type: string - format: date - skippedInstances: - type: array - items: - type: string - format: date - icsEventId: - type: array - items: - type: string - googleCalendarEventId: - type: string - googleCalendarExceptionEventId: - type: string - googleCalendarExceptionOriginalScheduled: - type: string - format: date - googleCalendarMovedOriginalDates: - type: array - items: - type: string - format: date - sortOrder: - type: string -binding_schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - $id: https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json - title: TaskNotes task data-contract binding - description: Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3. - type: object - required: - - profiles - - capabilities - - title - - status - - priority - - recurrence - - occurrences - - links - - archive - - time_tracking - - templating - properties: - profiles: - type: array - minItems: 1 - uniqueItems: true - items: - enum: - - core-lite - - recurrence - - templating - - materialized-occurrences - - extended - capabilities: - type: array - uniqueItems: true - items: - enum: - - dependencies - - reminders - - attachments - - links - - time-tracking - - materialized-occurrences - - rename - - archive - - batch - - concurrency - - dry-run - - migration - - templating - title: - $ref: "#/$defs/titlePolicy" - status: - $ref: "#/$defs/statusPolicy" - priority: - $ref: "#/$defs/priorityPolicy" - recurrence: - $ref: "#/$defs/recurrencePolicy" - occurrences: - $ref: "#/$defs/occurrencePolicy" - links: - $ref: "#/$defs/linkPolicy" - archive: - $ref: "#/$defs/archivePolicy" - time_tracking: - $ref: "#/$defs/timeTrackingPolicy" - templating: - $ref: "#/$defs/templatingPolicy" - nlp: - $ref: "#/$defs/nlpPolicy" - additionalProperties: false - $defs: - nonEmptyString: - type: string - minLength: 1 - stringSet: - type: array - uniqueItems: true - items: - $ref: "#/$defs/nonEmptyString" - titlePolicy: - type: object - required: - - storage - properties: - storage: - enum: - - filename - - frontmatter - filename_format: - enum: - - title - - zettel - - timestamp - - uuid - - custom - custom_filename_template: - $ref: "#/$defs/nonEmptyString" - allOf: - - if: - properties: - filename_format: - const: custom - required: - - filename_format - then: - properties: - custom_filename_template: - $ref: "#/$defs/nonEmptyString" - required: - - custom_filename_template - additionalProperties: true - statusDefinition: - type: object - required: - - value - - label - - color - - is_completed - - is_skipped - - exclude_from_cycle - - order - - auto_archive - - auto_archive_delay_minutes - properties: - value: - $ref: "#/$defs/nonEmptyString" - label: - type: string - color: - type: string - icon: - $ref: "#/$defs/nonEmptyString" - is_completed: - type: boolean - is_skipped: - type: boolean - exclude_from_cycle: - type: boolean - next_status: - $ref: "#/$defs/nonEmptyString" - order: - type: number - auto_archive: - type: boolean - auto_archive_delay_minutes: - type: number - minimum: 0 - additionalProperties: true - statusPolicy: - type: object - required: - - values - - default - - completed_values - - definitions - properties: - values: - $ref: "#/$defs/stringSet" - default: - $ref: "#/$defs/nonEmptyString" - completed_values: - $ref: "#/$defs/stringSet" - skipped_values: - $ref: "#/$defs/stringSet" - default_skipped: - $ref: "#/$defs/nonEmptyString" - definitions: - type: array - items: - $ref: "#/$defs/statusDefinition" - additionalProperties: false - priorityDefinition: - type: object - required: - - value - - label - - color - - weight - properties: - value: - $ref: "#/$defs/nonEmptyString" - label: - type: string - color: - type: string - icon: - $ref: "#/$defs/nonEmptyString" - weight: - type: number - additionalProperties: true - priorityPolicy: - type: object - required: - - values - - default - - definitions - properties: - values: - $ref: "#/$defs/stringSet" - default: - $ref: "#/$defs/nonEmptyString" - definitions: - type: array - items: - $ref: "#/$defs/priorityDefinition" - additionalProperties: false - recurrencePolicy: - type: object - required: - - syntax - - maintain_due_date_offset - - reset_body_checkboxes - properties: - syntax: - const: tasknotes - maintain_due_date_offset: - type: boolean - reset_body_checkboxes: - type: boolean - additionalProperties: false - occurrencePolicy: - type: object - required: - - identity_roles - - default_materialization - - default_next_trigger - properties: - identity_roles: - const: - - recurrenceParent - - occurrenceDate - default_materialization: - enum: - - manual - - on_completion - - rolling - default_next_trigger: - enum: - - completion - - completion_or_skip - past_horizon: - $ref: "#/$defs/nonEmptyString" - future_horizon: - $ref: "#/$defs/nonEmptyString" - additionalProperties: false - linkPolicy: - type: object - required: - - accepted_formats - - write_format - properties: - accepted_formats: - type: array - minItems: 1 - uniqueItems: true - items: - enum: - - wikilink - - markdown - write_format: - enum: - - wikilink - - markdown - additionalProperties: false - archivePolicy: - type: object - required: - - archived_tag - - move_on_archive - properties: - archived_tag: - $ref: "#/$defs/nonEmptyString" - move_on_archive: - type: boolean - folder: - $ref: "#/$defs/nonEmptyString" - additionalProperties: false - timeTrackingPolicy: - type: object - required: - - auto_stop_on_complete - properties: - auto_stop_on_complete: - type: boolean - additionalProperties: false - templatingPolicy: - type: object - required: - - enabled - - occurrence_enabled - properties: - enabled: - type: boolean - template_path: - $ref: "#/$defs/nonEmptyString" - occurrence_enabled: - type: boolean - occurrence_template_path: - $ref: "#/$defs/nonEmptyString" - failure_mode: - enum: - - error - - warning_fallback - unknown_variable_policy: - enum: - - preserve - - empty - additionalProperties: false - nlpTrigger: - type: object - required: - - property_id - - trigger - - enabled - properties: - property_id: - $ref: "#/$defs/nonEmptyString" - trigger: - $ref: "#/$defs/nonEmptyString" - enabled: - type: boolean - additionalProperties: false - nlpPolicy: - type: object - required: - - triggers - properties: - triggers: - type: array - items: - $ref: "#/$defs/nlpTrigger" - additionalProperties: false ---- - -# TaskNotes task contract - -Types implement this contract through `implements`; applications consume -the normalized contract view rather than assuming frontmatter names. diff --git a/public/contracts/artifacts/schemas/mdbase.comment/1.0.0.schema.json b/public/contracts/artifacts/schemas/mdbase.comment/1.0.0.schema.json deleted file mode 100644 index ae810d6..0000000 --- a/public/contracts/artifacts/schemas/mdbase.comment/1.0.0.schema.json +++ /dev/null @@ -1,229 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/contracts/schemas/mdbase.comment/1.0.0.schema.json", - "title": "Comment", - "description": "A comment, reply or suggested edit on a Markdown record, stored as its own record. The comment's Markdown body is its text.", - "type": "object", - "required": [ - "document", - "created_at" - ], - "properties": { - "document": { - "type": "string", - "pattern": "\\S", - "description": "Link to the commented record, such as [[chapters/method]]. Replies repeat their thread's document so one query finds a record's whole discussion." - }, - "in_reply_to": { - "type": "string", - "pattern": "\\S", - "description": "Link to the first comment of the thread this comment replies to. Absent on the first comment of a thread." - }, - "motivation": { - "enum": [ - "commenting", - "replying", - "editing" - ], - "default": "commenting", - "description": "commenting starts a thread, replying answers one, and editing suggests replacing the target's text." - }, - "target": { - "type": "object", - "description": "Where in the document the thread is anchored. Absent means the whole record. Only the first comment of a thread has a target.", - "properties": { - "quote": { - "type": "object", - "description": "The anchored text and the text around it. The quote is authoritative; positions are a hint.", - "required": [ - "exact" - ], - "properties": { - "exact": { - "type": "string", - "description": "The anchored text exactly as it appears in the record body. Empty for an insertion point, which prefix or suffix then locates." - }, - "prefix": { - "type": "string", - "description": "Text immediately before exact, to tell repeated occurrences apart." - }, - "suffix": { - "type": "string", - "description": "Text immediately after exact, to tell repeated occurrences apart." - } - }, - "if": { - "required": [ - "exact" - ], - "properties": { - "exact": { - "type": "string", - "maxLength": 0 - } - } - }, - "then": { - "anyOf": [ - { - "required": [ - "prefix" - ], - "properties": { - "prefix": { - "type": "string", - "minLength": 1 - } - } - }, - { - "required": [ - "suffix" - ], - "properties": { - "suffix": { - "type": "string", - "minLength": 1 - } - } - } - ] - }, - "additionalProperties": false - }, - "text_position": { - "type": "object", - "description": "Offsets of the quote in one revision of the record body.", - "required": [ - "basis", - "unit", - "start", - "end" - ], - "properties": { - "basis": { - "type": "object", - "required": [ - "profile", - "hash" - ], - "properties": { - "profile": { - "const": "markdown-body", - "description": "Offsets count the record's Markdown body as stored, after the frontmatter, so frontmatter edits never move them." - }, - "hash": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$", - "description": "SHA-256 of the UTF-8 body the offsets were measured in." - } - }, - "additionalProperties": false - }, - "unit": { - "const": "unicode_code_point" - }, - "start": { - "type": "integer", - "minimum": 0 - }, - "end": { - "type": "integer", - "minimum": 0 - } - }, - "additionalProperties": false - } - }, - "required": [ - "quote" - ], - "additionalProperties": false - }, - "suggestion": { - "type": "object", - "description": "The suggested edit of an editing comment: replace the target's quote with replacement.", - "required": [ - "replacement" - ], - "properties": { - "replacement": { - "type": "string", - "description": "The text to put in place of the quote. Empty suggests deleting it." - }, - "outcome": { - "enum": [ - "accepted", - "rejected" - ], - "description": "What happened to the suggestion once its thread was resolved." - } - }, - "additionalProperties": false - }, - "status": { - "enum": [ - "open", - "resolved" - ], - "default": "open", - "description": "Whether the thread is still open. Only meaningful on the first comment of a thread." - }, - "resolved_by": { - "type": "string", - "pattern": "\\S", - "description": "Link to the mdbase.person record of who resolved the thread." - }, - "resolved_at": { - "type": "string", - "format": "date-time" - }, - "created_by": { - "type": "string", - "pattern": "\\S", - "description": "Link to the mdbase.person record of the comment's author. Absent when the author has no person record." - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "modified_at": { - "type": "string", - "format": "date-time" - }, - "deleted_at": { - "type": "string", - "format": "date-time", - "description": "When the comment was withdrawn. The record stays so its thread and replies keep their shape; its body should be emptied." - } - }, - "allOf": [ - { - "if": { - "properties": { - "motivation": { - "const": "editing" - } - }, - "required": [ - "motivation" - ] - }, - "then": { - "required": [ - "target", - "suggestion" - ], - "properties": { - "target": { - "type": "object" - }, - "suggestion": { - "type": "object" - } - } - } - } - ], - "additionalProperties": false -} diff --git a/public/contracts/artifacts/schemas/mdbase.contact/1.0.0.schema.json b/public/contracts/artifacts/schemas/mdbase.contact/1.0.0.schema.json deleted file mode 100644 index 51570d0..0000000 --- a/public/contracts/artifacts/schemas/mdbase.contact/1.0.0.schema.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/contracts/schemas/mdbase.contact/1.0.0.schema.json", - "title": "Contact", - "description": "A compact application-facing contact view.", - "type": "object", - "required": ["name"], - "properties": { - "name": { - "type": "string", - "minLength": 1, - "description": "The name applications should use when presenting this contact." - }, - "kind": { - "type": "string", - "enum": ["individual", "organisation", "group"], - "description": "The broad kind of contact when the collection distinguishes it." - }, - "primary_email": { - "type": "string", - "format": "email", - "description": "The preferred email address for this contact." - }, - "primary_phone": { - "type": "string", - "minLength": 1, - "description": "The preferred telephone number for this contact." - }, - "organisation": { - "type": "string", - "minLength": 1, - "description": "The organisation most closely associated with this contact." - }, - "birthday": { - "type": "string", - "format": "date", - "description": "The contact's birthday when known." - } - }, - "additionalProperties": false -} diff --git a/public/contracts/artifacts/schemas/mdbase.jscontact.card/2.0.0.schema.json b/public/contracts/artifacts/schemas/mdbase.jscontact.card/2.0.0.schema.json deleted file mode 100644 index 17c8144..0000000 --- a/public/contracts/artifacts/schemas/mdbase.jscontact.card/2.0.0.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/contracts/schemas/mdbase.jscontact.card/2.0.0.schema.json", - "title": "JSContact Card 2.0 core profile", - "description": "A strict mdbase core profile of an IETF JSContact 2.0 Card.", - "type": "object", - "required": ["@type", "version"], - "properties": { - "@type": { "const": "Card" }, - "version": { "const": "2.0" }, - "uid": { "type": "string", "minLength": 1 }, - "kind": { - "enum": ["individual", "group", "org", "location", "device", "application"] - }, - "name": { "$ref": "#/$defs/name" }, - "emails": { - "type": "object", - "propertyNames": { "$ref": "#/$defs/id" }, - "additionalProperties": { "$ref": "#/$defs/emailAddress" } - }, - "phones": { - "type": "object", - "propertyNames": { "$ref": "#/$defs/id" }, - "additionalProperties": { "$ref": "#/$defs/phone" } - }, - "organizations": { - "type": "object", - "propertyNames": { "$ref": "#/$defs/id" }, - "additionalProperties": { "$ref": "#/$defs/organization" } - }, - "notes": { - "type": "object", - "propertyNames": { "$ref": "#/$defs/id" }, - "additionalProperties": { "$ref": "#/$defs/note" } - } - }, - "additionalProperties": false, - "$defs": { - "id": { - "type": "string", - "minLength": 1 - }, - "trueSet": { - "type": "object", - "additionalProperties": { "const": true } - }, - "name": { - "type": "object", - "properties": { - "@type": { "const": "Name" }, - "components": { - "type": "array", - "minItems": 1, - "contains": { - "type": "object", - "required": ["kind"], - "properties": { - "kind": { "not": { "const": "separator" } } - } - }, - "items": { "$ref": "#/$defs/nameComponent" } - }, - "full": { "type": "string", "minLength": 1 }, - "isOrdered": { "type": "boolean" }, - "defaultSeparator": { "type": "string" } - }, - "anyOf": [ - { "required": ["components"] }, - { "required": ["full"] } - ], - "additionalProperties": false - }, - "nameComponent": { - "type": "object", - "required": ["kind", "value"], - "properties": { - "@type": { "const": "NameComponent" }, - "kind": { - "enum": [ - "credential", - "generation", - "given", - "given2", - "separator", - "surname", - "surname2", - "title" - ] - }, - "value": { "type": "string" } - }, - "additionalProperties": false - }, - "emailAddress": { - "type": "object", - "required": ["address"], - "properties": { - "@type": { "const": "EmailAddress" }, - "address": { "type": "string", "format": "email" }, - "contexts": { "$ref": "#/$defs/trueSet" }, - "pref": { "type": "integer", "minimum": 1 }, - "label": { "type": "string" } - }, - "additionalProperties": false - }, - "phone": { - "type": "object", - "required": ["number"], - "properties": { - "@type": { "const": "Phone" }, - "number": { "type": "string", "minLength": 1 }, - "features": { "$ref": "#/$defs/trueSet" }, - "contexts": { "$ref": "#/$defs/trueSet" }, - "pref": { "type": "integer", "minimum": 1 }, - "label": { "type": "string" } - }, - "additionalProperties": false - }, - "organization": { - "type": "object", - "properties": { - "@type": { "const": "Organization" }, - "name": { "type": "string", "minLength": 1 }, - "units": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#/$defs/orgUnit" } - }, - "sortAs": { "type": "string" }, - "contexts": { "$ref": "#/$defs/trueSet" } - }, - "anyOf": [ - { "required": ["name"] }, - { "required": ["units"] } - ], - "additionalProperties": false - }, - "orgUnit": { - "type": "object", - "required": ["name"], - "properties": { - "@type": { "const": "OrgUnit" }, - "name": { "type": "string", "minLength": 1 } - }, - "additionalProperties": false - }, - "note": { - "type": "object", - "required": ["note"], - "properties": { - "@type": { "const": "Note" }, - "note": { "type": "string" }, - "created": { "type": "string", "format": "date-time" } - }, - "additionalProperties": false - } - } -} - diff --git a/public/contracts/artifacts/schemas/mdbase.person/1.0.0.schema.json b/public/contracts/artifacts/schemas/mdbase.person/1.0.0.schema.json deleted file mode 100644 index 6116dff..0000000 --- a/public/contracts/artifacts/schemas/mdbase.person/1.0.0.schema.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/contracts/schemas/mdbase.person/1.0.0.schema.json", - "title": "Person", - "description": "A portable person reference with editable account identity associations. Not an authentication or access-control assertion.", - "type": "object", - "required": ["id", "name"], - "properties": { - "id": { - "type": "string", - "pattern": "\\S", - "description": "Stable person identifier used by references such as task assignments; independent of file path, name, account, and membership." - }, - "name": { - "type": "string", - "pattern": "\\S", - "description": "Collection-owned display name, not a verified account name." - }, - "identities": { - "type": "array", - "uniqueItems": true, - "description": "Editable identity associations. Missing or empty means this person has no linked account. Match issuer and subject exactly; never match by email or name.", - "items": { - "type": "object", - "required": ["issuer", "subject"], - "properties": { - "issuer": { - "type": "string", - "format": "uri", - "pattern": "^https?://", - "description": "Stable issuer URL supplied by the identity service. Copy exactly; do not derive from a collection authority or relay URL." - }, - "subject": { - "type": "string", - "pattern": "\\S", - "description": "Opaque, case-sensitive, account-wide identifier supplied by the issuer. Not an email, membership ID, or credential." - } - }, - "additionalProperties": false - } - } - }, - "additionalProperties": false -} diff --git a/public/contracts/artifacts/schemas/mdbase.person/2.0.0.schema.json b/public/contracts/artifacts/schemas/mdbase.person/2.0.0.schema.json deleted file mode 100644 index 65e3dff..0000000 --- a/public/contracts/artifacts/schemas/mdbase.person/2.0.0.schema.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/contracts/schemas/mdbase.person/2.0.0.schema.json", - "title": "Person", - "description": "A person represented by a record, referenced by links to that record, with editable account identity associations. Not an authentication or access-control assertion.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "pattern": "\\S", - "description": "Collection-owned display name, not a verified account name." - }, - "identities": { - "type": "array", - "uniqueItems": true, - "description": "Editable identity associations. Missing or empty means this person has no linked account. Match issuer and subject exactly; never match by email or name.", - "items": { - "type": "object", - "required": [ - "issuer", - "subject" - ], - "properties": { - "issuer": { - "type": "string", - "format": "uri", - "pattern": "^https?://", - "description": "Stable issuer URL supplied by the identity service. Copy exactly; do not derive from a collection authority or relay URL." - }, - "subject": { - "type": "string", - "pattern": "\\S", - "description": "Opaque, case-sensitive, account-wide identifier supplied by the issuer. Not an email, membership ID, or credential." - } - }, - "additionalProperties": false - } - } - }, - "additionalProperties": false -} diff --git a/public/contracts/artifacts/schemas/mdbase.record.created/1.0.0.schema.json b/public/contracts/artifacts/schemas/mdbase.record.created/1.0.0.schema.json deleted file mode 100644 index f2f1c4e..0000000 --- a/public/contracts/artifacts/schemas/mdbase.record.created/1.0.0.schema.json +++ /dev/null @@ -1,180 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase record-created event data", - "type": "object", - "required": [ - "path", - "after", - "changed_fields", - "revision", - "types" - ], - "properties": { - "path": { - "type": "string", - "minLength": 1 - }, - "after": { - "type": "object" - }, - "changed_fields": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "revision": { - "type": "string", - "minLength": 1 - }, - "types": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.record.created/1.0.0.schema.json" -} diff --git a/public/contracts/artifacts/schemas/mdbase.record.deleted/1.0.0.schema.json b/public/contracts/artifacts/schemas/mdbase.record.deleted/1.0.0.schema.json deleted file mode 100644 index 49a395f..0000000 --- a/public/contracts/artifacts/schemas/mdbase.record.deleted/1.0.0.schema.json +++ /dev/null @@ -1,172 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase record-deleted event data", - "type": "object", - "required": [ - "path", - "before", - "previous_revision", - "types" - ], - "properties": { - "path": { - "type": "string", - "minLength": 1 - }, - "before": { - "type": "object" - }, - "previous_revision": { - "type": "string", - "minLength": 1 - }, - "types": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.record.deleted/1.0.0.schema.json" -} diff --git a/public/contracts/artifacts/schemas/mdbase.record.modified/1.0.0.schema.json b/public/contracts/artifacts/schemas/mdbase.record.modified/1.0.0.schema.json deleted file mode 100644 index 57ad051..0000000 --- a/public/contracts/artifacts/schemas/mdbase.record.modified/1.0.0.schema.json +++ /dev/null @@ -1,198 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase record-modified event data", - "type": "object", - "required": [ - "path", - "before", - "after", - "changed_fields", - "previous_revision", - "revision", - "previous_types", - "types" - ], - "properties": { - "path": { - "type": "string", - "minLength": 1 - }, - "before": { - "type": "object" - }, - "after": { - "type": "object" - }, - "changed_fields": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "previous_revision": { - "type": "string", - "minLength": 1 - }, - "revision": { - "type": "string", - "minLength": 1 - }, - "previous_types": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - }, - "types": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.record.modified/1.0.0.schema.json" -} diff --git a/public/contracts/artifacts/schemas/mdbase.record.renamed/1.0.0.schema.json b/public/contracts/artifacts/schemas/mdbase.record.renamed/1.0.0.schema.json deleted file mode 100644 index 4c11fc8..0000000 --- a/public/contracts/artifacts/schemas/mdbase.record.renamed/1.0.0.schema.json +++ /dev/null @@ -1,195 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase record-renamed event data", - "type": "object", - "required": [ - "from", - "to", - "before", - "after", - "previous_revision", - "revision", - "previous_types", - "types" - ], - "properties": { - "from": { - "type": "string", - "minLength": 1 - }, - "to": { - "type": "string", - "minLength": 1 - }, - "before": { - "type": "object" - }, - "after": { - "type": "object" - }, - "previous_revision": { - "type": "string", - "minLength": 1 - }, - "revision": { - "type": "string", - "minLength": 1 - }, - "previous_types": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - }, - "types": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.record.renamed/1.0.0.schema.json" -} diff --git a/public/contracts/artifacts/schemas/mdbase.runtime.action-attempt/1.0.0.schema.json b/public/contracts/artifacts/schemas/mdbase.runtime.action-attempt/1.0.0.schema.json deleted file mode 100644 index b02f7b7..0000000 --- a/public/contracts/artifacts/schemas/mdbase.runtime.action-attempt/1.0.0.schema.json +++ /dev/null @@ -1,238 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime action attempt", - "type": "object", - "required": [ - "type", - "id", - "run_id", - "step_id", - "request_id", - "invocation_id", - "attempt_id", - "contract", - "provider", - "provider_declaration_digest", - "status", - "created_at", - "updated_at" - ], - "properties": { - "type": { - "const": "runtime_action_attempt" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "run_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "step_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "request_id": { - "type": "string", - "minLength": 1 - }, - "invocation_id": { - "type": "string", - "minLength": 1 - }, - "attempt_id": { - "type": "string", - "minLength": 1 - }, - "contract": { - "$ref": "#/$defs/exactContractReference" - }, - "provider": { - "$ref": "#/$defs/identity" - }, - "provider_declaration_digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "handler_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "idempotency_key": { - "type": "string" - }, - "status": { - "enum": [ - "admitted", - "dispatching", - "succeeded", - "rejected", - "failed", - "cancelled", - "indeterminate" - ] - }, - "request": { - "type": "object" - }, - "invocation": { - "type": "object" - }, - "outcome": { - "type": "object" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "updated_at": { - "type": "string", - "format": "date-time" - }, - "completed_at": { - "type": "string", - "format": "date-time" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.action-attempt/1.0.0.schema.json" -} diff --git a/public/contracts/artifacts/schemas/mdbase.runtime.capability-grant/1.0.0.schema.json b/public/contracts/artifacts/schemas/mdbase.runtime.capability-grant/1.0.0.schema.json deleted file mode 100644 index 9d6cc2d..0000000 --- a/public/contracts/artifacts/schemas/mdbase.runtime.capability-grant/1.0.0.schema.json +++ /dev/null @@ -1,197 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase runtime capability grant", - "type": "object", - "required": [ - "type", - "id", - "capability", - "principal", - "mode", - "granted_at" - ], - "properties": { - "type": { - "const": "runtime_capability_grant" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "capability": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "principal": { - "$ref": "#/$defs/identity" - }, - "mode": { - "enum": [ - "allow", - "deny" - ] - }, - "actions": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/$defs/contractRequirement" - } - }, - "providers": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/$defs/providerSelector" - } - }, - "granted_at": { - "type": "string", - "format": "date-time" - }, - "expires_at": { - "type": "string", - "format": "date-time" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.capability-grant/1.0.0.schema.json" -} diff --git a/public/contracts/artifacts/schemas/mdbase.runtime.checkpoint/1.0.0.schema.json b/public/contracts/artifacts/schemas/mdbase.runtime.checkpoint/1.0.0.schema.json deleted file mode 100644 index f14163b..0000000 --- a/public/contracts/artifacts/schemas/mdbase.runtime.checkpoint/1.0.0.schema.json +++ /dev/null @@ -1,188 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime checkpoint", - "type": "object", - "required": [ - "type", - "id", - "run_id", - "generation", - "status", - "state", - "updated_at" - ], - "properties": { - "type": { - "const": "runtime_checkpoint" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "run_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "generation": { - "type": "integer", - "minimum": 1 - }, - "status": { - "enum": [ - "open", - "waiting", - "ready", - "completed", - "failed", - "cancelled" - ] - }, - "state": { - "type": "object" - }, - "updated_at": { - "type": "string", - "format": "date-time" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.checkpoint/1.0.0.schema.json" -} diff --git a/public/contracts/artifacts/schemas/mdbase.runtime.dead-letter/1.0.0.schema.json b/public/contracts/artifacts/schemas/mdbase.runtime.dead-letter/1.0.0.schema.json deleted file mode 100644 index ea3be8b..0000000 --- a/public/contracts/artifacts/schemas/mdbase.runtime.dead-letter/1.0.0.schema.json +++ /dev/null @@ -1,191 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime dead letter", - "type": "object", - "required": [ - "type", - "id", - "reason", - "status", - "evidence", - "created_at" - ], - "properties": { - "type": { - "const": "runtime_dead_letter" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "reason": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "status": { - "enum": [ - "unresolved", - "acknowledged", - "requeued" - ] - }, - "evidence_kind": { - "enum": [ - "event", - "action_request", - "action_outcome" - ] - }, - "evidence": { - "type": "object" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "acknowledged_at": { - "type": "string", - "format": "date-time" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.dead-letter/1.0.0.schema.json" -} diff --git a/public/contracts/artifacts/schemas/mdbase.runtime.diagnostic/1.0.0.schema.json b/public/contracts/artifacts/schemas/mdbase.runtime.diagnostic/1.0.0.schema.json deleted file mode 100644 index 0dec633..0000000 --- a/public/contracts/artifacts/schemas/mdbase.runtime.diagnostic/1.0.0.schema.json +++ /dev/null @@ -1,193 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime diagnostic", - "type": "object", - "required": [ - "type", - "id", - "severity", - "code", - "message", - "created_at" - ], - "properties": { - "type": { - "const": "runtime_diagnostic" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "severity": { - "enum": [ - "info", - "warning", - "error" - ] - }, - "code": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "run_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "attempt_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "path": { - "type": "string" - }, - "details": {}, - "created_at": { - "type": "string", - "format": "date-time" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.diagnostic/1.0.0.schema.json" -} diff --git a/public/contracts/artifacts/schemas/mdbase.runtime.policy/1.0.0.schema.json b/public/contracts/artifacts/schemas/mdbase.runtime.policy/1.0.0.schema.json deleted file mode 100644 index a873c7b..0000000 --- a/public/contracts/artifacts/schemas/mdbase.runtime.policy/1.0.0.schema.json +++ /dev/null @@ -1,263 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime policy", - "type": "object", - "required": [ - "type", - "id", - "version", - "enabled", - "grants" - ], - "properties": { - "type": { - "const": "runtime_policy" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "name": { - "type": "string", - "minLength": 1 - }, - "enabled": { - "type": "boolean" - }, - "executors": { - "type": "object", - "required": [], - "properties": { - "default": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "workflows": { - "type": "object", - "additionalProperties": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "provider_selections": { - "type": "array", - "items": { - "type": "object", - "required": [ - "contract", - "selector" - ], - "properties": { - "contract": { - "$ref": "#/$defs/contractRequirement" - }, - "selector": { - "$ref": "#/$defs/providerSelector" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - } - }, - "grants": { - "type": "array", - "items": { - "type": "object", - "required": [ - "capability", - "mode" - ], - "properties": { - "capability": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "mode": { - "enum": [ - "allow", - "deny" - ] - }, - "actions": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/$defs/contractRequirement" - } - }, - "providers": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/$defs/providerSelector" - } - }, - "max_calls_per_run": { - "type": "integer", - "minimum": 1 - }, - "max_records_per_run": { - "type": "integer", - "minimum": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.policy/1.0.0.schema.json" -} diff --git a/public/contracts/artifacts/schemas/mdbase.runtime.provider-registration/1.0.0.schema.json b/public/contracts/artifacts/schemas/mdbase.runtime.provider-registration/1.0.0.schema.json deleted file mode 100644 index 1fb73c5..0000000 --- a/public/contracts/artifacts/schemas/mdbase.runtime.provider-registration/1.0.0.schema.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase runtime provider registration evidence", - "type": "object", - "required": [ - "type", - "id", - "declaration_kind", - "declaration", - "verified_at", - "active" - ], - "properties": { - "type": { - "const": "runtime_provider_registration" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "declaration_kind": { - "enum": [ - "event_source", - "action_provider" - ] - }, - "declaration": { - "type": "object" - }, - "verified_at": { - "type": "string", - "format": "date-time" - }, - "active": { - "type": "boolean" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.provider-registration/1.0.0.schema.json" -} diff --git a/public/contracts/artifacts/schemas/mdbase.runtime.run.cancel/1.0.0.output.schema.json b/public/contracts/artifacts/schemas/mdbase.runtime.run.cancel/1.0.0.output.schema.json deleted file mode 100644 index 8c3ed04..0000000 --- a/public/contracts/artifacts/schemas/mdbase.runtime.run.cancel/1.0.0.output.schema.json +++ /dev/null @@ -1,161 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase runtime run-cancel action output", - "type": "object", - "required": [ - "run_id", - "status" - ], - "properties": { - "run_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "status": { - "enum": [ - "cancellation_requested", - "already_terminal" - ] - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.run.cancel/1.0.0.output.schema.json" -} diff --git a/public/contracts/artifacts/schemas/mdbase.runtime.run.cancel/1.0.0.schema.json b/public/contracts/artifacts/schemas/mdbase.runtime.run.cancel/1.0.0.schema.json deleted file mode 100644 index e5fd257..0000000 --- a/public/contracts/artifacts/schemas/mdbase.runtime.run.cancel/1.0.0.schema.json +++ /dev/null @@ -1,157 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase runtime run-cancel action input", - "type": "object", - "required": [ - "run_id" - ], - "properties": { - "run_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "reason": { - "type": "string" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.run.cancel/1.0.0.schema.json" -} diff --git a/public/contracts/artifacts/schemas/mdbase.runtime.run/1.0.0.schema.json b/public/contracts/artifacts/schemas/mdbase.runtime.run/1.0.0.schema.json deleted file mode 100644 index 3966490..0000000 --- a/public/contracts/artifacts/schemas/mdbase.runtime.run/1.0.0.schema.json +++ /dev/null @@ -1,356 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime run", - "type": "object", - "required": [ - "type", - "id", - "workflow_id", - "workflow_version", - "workflow_revision", - "event_id", - "event_contract", - "admitted_plan", - "status", - "created_at", - "updated_at" - ], - "properties": { - "type": { - "const": "runtime_run" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "workflow_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "workflow_version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "workflow_revision": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "event_id": { - "type": "string", - "minLength": 1 - }, - "event_contract": { - "$ref": "#/$defs/exactContractReference" - }, - "event_source": { - "$ref": "#/$defs/identity" - }, - "admitted_plan": { - "$ref": "#/$defs/admittedPlan" - }, - "policy_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "policy_revision": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "trigger_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "event_cursor": { - "type": "integer", - "minimum": 1 - }, - "executor": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "idempotency_key": { - "type": "string" - }, - "concurrency_group": { - "type": "string" - }, - "status": { - "enum": [ - "queued", - "running", - "waiting", - "succeeded", - "failed", - "cancelled", - "indeterminate" - ] - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "updated_at": { - "type": "string", - "format": "date-time" - }, - "started_at": { - "type": "string", - "format": "date-time" - }, - "finished_at": { - "type": "string", - "format": "date-time" - }, - "lease": { - "$ref": "#/$defs/lease" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - }, - "admittedPlan": { - "type": "object", - "required": [ - "profile_version", - "workflow_revision", - "event", - "steps" - ], - "properties": { - "profile_version": { - "const": "0.2" - }, - "workflow_revision": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "event": { - "type": "object", - "required": [ - "contract", - "source" - ], - "properties": { - "contract": { - "$ref": "#/$defs/exactContractReference" - }, - "source": { - "$ref": "#/$defs/identity" - }, - "source_declaration_digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "steps": { - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "contract", - "provider", - "provider_declaration_digest", - "handler_id" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "contract": { - "$ref": "#/$defs/exactContractReference" - }, - "provider": { - "$ref": "#/$defs/identity" - }, - "provider_declaration_digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "handler_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "lease": { - "type": "object", - "required": [ - "owner", - "token", - "expires_at" - ], - "properties": { - "owner": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "token": { - "type": "string", - "minLength": 1 - }, - "expires_at": { - "type": "string", - "format": "date-time" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.run/1.0.0.schema.json" -} diff --git a/public/contracts/artifacts/schemas/mdbase.runtime.timer.fired/1.0.0.schema.json b/public/contracts/artifacts/schemas/mdbase.runtime.timer.fired/1.0.0.schema.json deleted file mode 100644 index 26296a9..0000000 --- a/public/contracts/artifacts/schemas/mdbase.runtime.timer.fired/1.0.0.schema.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase runtime timer-fired event data", - "type": "object", - "required": [ - "timer_id", - "generation", - "scheduled_for", - "fired_at", - "late_by_ms", - "data" - ], - "properties": { - "timer_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "generation": { - "type": "integer", - "minimum": 1 - }, - "scheduled_for": { - "type": "string", - "format": "date-time" - }, - "fired_at": { - "type": "string", - "format": "date-time" - }, - "late_by_ms": { - "type": "integer", - "minimum": 0 - }, - "data": { - "description": "Opaque application data supplied when the timer was scheduled." - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.timer.fired/1.0.0.schema.json" -} diff --git a/public/contracts/artifacts/schemas/mdbase.runtime.timer/1.0.0.schema.json b/public/contracts/artifacts/schemas/mdbase.runtime.timer/1.0.0.schema.json deleted file mode 100644 index a03fc67..0000000 --- a/public/contracts/artifacts/schemas/mdbase.runtime.timer/1.0.0.schema.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime timer", - "type": "object", - "required": [ - "type", - "id", - "generation", - "status", - "fire_at", - "event", - "created_at", - "updated_at" - ], - "properties": { - "type": { - "const": "runtime_timer" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "generation": { - "type": "integer", - "minimum": 1 - }, - "status": { - "enum": [ - "scheduled", - "firing", - "fired", - "cancelled" - ] - }, - "fire_at": { - "type": "string", - "format": "date-time" - }, - "event": { - "type": "object", - "required": [ - "contract", - "data" - ], - "properties": { - "contract": { - "$ref": "#/$defs/contractRequirement" - }, - "subject": { - "type": "string" - }, - "correlation_id": { - "type": "string" - }, - "causation_id": { - "type": "string" - }, - "data": {} - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "missed_run_policy": { - "const": "fire_once" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "updated_at": { - "type": "string", - "format": "date-time" - }, - "fired_at": { - "type": "string", - "format": "date-time" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.timer/1.0.0.schema.json" -} diff --git a/public/contracts/artifacts/schemas/mdbase.runtime.workflow/1.0.0.schema.json b/public/contracts/artifacts/schemas/mdbase.runtime.workflow/1.0.0.schema.json deleted file mode 100644 index 60cf082..0000000 --- a/public/contracts/artifacts/schemas/mdbase.runtime.workflow/1.0.0.schema.json +++ /dev/null @@ -1,392 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime workflow", - "type": "object", - "required": [ - "type", - "id", - "version", - "name", - "enabled", - "triggers", - "steps" - ], - "properties": { - "type": { - "const": "runtime_workflow" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "name": { - "type": "string", - "minLength": 1 - }, - "description": { - "type": "string" - }, - "enabled": { - "type": "boolean" - }, - "requires": { - "$ref": "#/$defs/requires" - }, - "vars": { - "type": "object", - "additionalProperties": {} - }, - "triggers": { - "type": "array", - "minItems": 1, - "items": { - "$ref": "#/$defs/trigger" - } - }, - "steps": { - "type": "array", - "minItems": 1, - "items": { - "$ref": "#/$defs/step" - } - }, - "run": { - "$ref": "#/$defs/runPolicy" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - }, - "requires": { - "type": "object", - "required": [], - "properties": { - "capabilities": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "trigger": { - "type": "object", - "required": [ - "id", - "event" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "event": { - "$ref": "#/$defs/contractRequirement" - }, - "if": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - }, - "debounce": { - "$ref": "#/$defs/duration" - }, - "minimum_interval": { - "$ref": "#/$defs/duration" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "step": { - "type": "object", - "required": [ - "id", - "action" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "name": { - "type": "string" - }, - "action": { - "$ref": "#/$defs/contractRequirement" - }, - "provider": { - "$ref": "#/$defs/providerSelector" - }, - "requires": { - "$ref": "#/$defs/requires" - }, - "if": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - }, - "input": { - "type": "object", - "additionalProperties": {} - }, - "for_each": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": {}, - "as": { - "type": "string", - "pattern": "^[A-Za-z_][A-Za-z0-9_]*$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "duration": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)(ms|s|m|h|d)$" - }, - "runPolicy": { - "type": "object", - "required": [], - "properties": { - "idempotency": { - "type": "object", - "required": [ - "key" - ], - "properties": { - "key": {} - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "concurrency": { - "type": "object", - "required": [ - "policy" - ], - "properties": { - "group": {}, - "policy": { - "enum": [ - "skip", - "queue", - "replace", - "allow" - ] - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "limits": { - "type": "object", - "required": [], - "properties": { - "timeout": { - "$ref": "#/$defs/duration" - }, - "max_items": { - "type": "integer", - "minimum": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "on_error": { - "enum": [ - "stop", - "continue" - ] - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.workflow/1.0.0.schema.json" -} diff --git a/public/contracts/artifacts/schemas/mdbase.view/1.0.0.schema.json b/public/contracts/artifacts/schemas/mdbase.view/1.0.0.schema.json deleted file mode 100644 index d98e82f..0000000 --- a/public/contracts/artifacts/schemas/mdbase.view/1.0.0.schema.json +++ /dev/null @@ -1,261 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/v0.3/view.schema.json", - "title": "mdbase.view 1.0.0 record contract view", - "description": "The contract view of a saved-view record. A type implements mdbase.view by mapping these fields; the optional type property only lets the canonical view type validate its own membership value.", - "type": "object", - "required": ["id", "version", "name", "views"], - "properties": { - "type": { "type": "string", "minLength": 1 }, - "id": { "$ref": "#/$defs/identifier" }, - "version": { "type": "integer", "minimum": 1 }, - "name": { "type": "string", "minLength": 1 }, - "description": { "type": "string" }, - "query": { "$ref": "#/$defs/sharedQuery" }, - "properties": { "$ref": "#/$defs/propertyMetadataSet" }, - "summary_functions": { "$ref": "#/$defs/summaryFunctionSet" }, - "views": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#/$defs/view" } - } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "typeName": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9_-]{0,127}$" - }, - "fieldName": { - "type": "string", - "pattern": "^[A-Za-z_][A-Za-z0-9_:-]*$" - }, - "expression": { - "type": "string", - "minLength": 1 - }, - "extension": { - "type": "object", - "additionalProperties": true - }, - "typeList": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { "$ref": "#/$defs/typeName" } - }, - "sharedQuery": { - "type": "object", - "properties": { - "types": { "$ref": "#/$defs/typeList" }, - "where": { "$ref": "#/$defs/expression" }, - "context": { "$ref": "#/$defs/viewContext" }, - "projections": { "$ref": "#/$defs/projectionSet" } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false - }, - "viewContext": { - "type": "object", - "required": ["this"], - "properties": { - "this": { "$ref": "#/$defs/thisContext" } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false - }, - "thisContext": { - "type": "object", - "properties": { - "on_missing": { - "enum": ["view", "null", "error"], - "default": "view" - }, - "types": { "$ref": "#/$defs/typeList" } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false - }, - "projectionSet": { - "type": "object", - "propertyNames": { "$ref": "#/$defs/fieldName" }, - "additionalProperties": { "$ref": "#/$defs/projection" } - }, - "projection": { - "type": "object", - "required": ["expr"], - "properties": { - "expr": { "$ref": "#/$defs/expression" }, - "description": { "type": "string" } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false - }, - "propertyMetadataSet": { - "type": "object", - "propertyNames": { "type": "string", "minLength": 1 }, - "additionalProperties": { "$ref": "#/$defs/propertyMetadata" } - }, - "propertyMetadata": { - "type": "object", - "properties": { - "label": { "type": "string" }, - "description": { "type": "string" }, - "format": { "type": "string" }, - "hidden": { "type": "boolean" } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false - }, - "summaryFunctionSet": { - "type": "object", - "propertyNames": { "$ref": "#/$defs/fieldName" }, - "additionalProperties": { "$ref": "#/$defs/summaryFunction" } - }, - "summaryFunction": { - "type": "object", - "required": ["expr"], - "properties": { - "expr": { "$ref": "#/$defs/expression" }, - "description": { "type": "string" } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false - }, - "view": { - "type": "object", - "required": ["id", "name"], - "properties": { - "id": { "$ref": "#/$defs/identifier" }, - "name": { "type": "string", "minLength": 1 }, - "description": { "type": "string" }, - "types": { "$ref": "#/$defs/typeList" }, - "where": { "$ref": "#/$defs/expression" }, - "context": { "$ref": "#/$defs/viewContext" }, - "projections": { "$ref": "#/$defs/projectionSet" }, - "select": { "$ref": "#/$defs/select" }, - "order_by": { "$ref": "#/$defs/orderBy" }, - "group_by": { "$ref": "#/$defs/groupBy" }, - "summaries": { "$ref": "#/$defs/summaries" }, - "limit": { "type": "integer", "minimum": 0 }, - "offset": { "type": "integer", "minimum": 0 }, - "include_body": { "type": "boolean", "default": false }, - "frontmatter_mode": { - "enum": ["effective", "persisted", "both"], - "default": "effective" - }, - "presentation": { "$ref": "#/$defs/presentation" } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false - }, - "select": { - "type": "array", - "minItems": 1, - "items": { - "oneOf": [ - { "type": "string", "minLength": 1 }, - { "$ref": "#/$defs/selectExpression" } - ] - } - }, - "selectExpression": { - "type": "object", - "required": ["name", "expr"], - "properties": { - "name": { "$ref": "#/$defs/fieldName" }, - "expr": { "$ref": "#/$defs/expression" }, - "label": { "type": "string" }, - "description": { "type": "string" } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false - }, - "orderBy": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": ["field"], - "properties": { - "field": { "type": "string", "minLength": 1 }, - "direction": { "enum": ["asc", "desc"], "default": "asc" } - }, - "additionalProperties": false - } - }, - "groupBy": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": ["field"], - "properties": { - "field": { "type": "string", "minLength": 1 }, - "direction": { "enum": ["asc", "desc"], "default": "asc" } - }, - "additionalProperties": false - } - }, - "summaries": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#/$defs/summary" } - }, - "summary": { - "type": "object", - "required": ["field", "function"], - "properties": { - "field": { "type": "string", "minLength": 1 }, - "function": { "$ref": "#/$defs/identifier" }, - "name": { "$ref": "#/$defs/fieldName" }, - "label": { "type": "string" } - }, - "additionalProperties": false - }, - "presentation": { - "type": "object", - "required": ["type"], - "properties": { - "type": { "$ref": "#/$defs/identifier" }, - "fallback": { "$ref": "#/$defs/identifier" }, - "mappings": { - "type": "object", - "propertyNames": { "$ref": "#/$defs/fieldName" }, - "additionalProperties": { "type": "string", "minLength": 1 } - }, - "options": { - "type": "object", - "additionalProperties": true - } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false - } - } -} diff --git a/public/contracts/artifacts/schemas/tasknotes.task.binding/0.3.0-rc.3.schema.json b/public/contracts/artifacts/schemas/tasknotes.task.binding/0.3.0-rc.3.schema.json deleted file mode 100644 index af2bcc9..0000000 --- a/public/contracts/artifacts/schemas/tasknotes.task.binding/0.3.0-rc.3.schema.json +++ /dev/null @@ -1,469 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json", - "title": "TaskNotes task data-contract binding", - "description": "Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3.", - "type": "object", - "required": [ - "profiles", - "capabilities", - "title", - "status", - "priority", - "recurrence", - "occurrences", - "links", - "archive", - "time_tracking", - "templating" - ], - "properties": { - "profiles": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "enum": [ - "core-lite", - "recurrence", - "templating", - "materialized-occurrences", - "extended" - ] - } - }, - "capabilities": { - "type": "array", - "uniqueItems": true, - "items": { - "enum": [ - "dependencies", - "reminders", - "attachments", - "links", - "time-tracking", - "materialized-occurrences", - "rename", - "archive", - "batch", - "concurrency", - "dry-run", - "migration", - "templating" - ] - } - }, - "title": { - "$ref": "#/$defs/titlePolicy" - }, - "status": { - "$ref": "#/$defs/statusPolicy" - }, - "priority": { - "$ref": "#/$defs/priorityPolicy" - }, - "recurrence": { - "$ref": "#/$defs/recurrencePolicy" - }, - "occurrences": { - "$ref": "#/$defs/occurrencePolicy" - }, - "links": { - "$ref": "#/$defs/linkPolicy" - }, - "archive": { - "$ref": "#/$defs/archivePolicy" - }, - "time_tracking": { - "$ref": "#/$defs/timeTrackingPolicy" - }, - "templating": { - "$ref": "#/$defs/templatingPolicy" - }, - "nlp": { - "$ref": "#/$defs/nlpPolicy" - } - }, - "additionalProperties": false, - "$defs": { - "nonEmptyString": { - "type": "string", - "minLength": 1 - }, - "stringSet": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "titlePolicy": { - "type": "object", - "required": [ - "storage" - ], - "properties": { - "storage": { - "enum": [ - "filename", - "frontmatter" - ] - }, - "filename_format": { - "enum": [ - "title", - "zettel", - "timestamp", - "uuid", - "custom" - ] - }, - "custom_filename_template": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "allOf": [ - { - "if": { - "properties": { - "filename_format": { - "const": "custom" - } - }, - "required": [ - "filename_format" - ] - }, - "then": { - "properties": { - "custom_filename_template": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "required": [ - "custom_filename_template" - ] - } - } - ], - "additionalProperties": true - }, - "statusDefinition": { - "type": "object", - "required": [ - "value", - "label", - "color", - "is_completed", - "is_skipped", - "exclude_from_cycle", - "order", - "auto_archive", - "auto_archive_delay_minutes" - ], - "properties": { - "value": { - "$ref": "#/$defs/nonEmptyString" - }, - "label": { - "type": "string" - }, - "color": { - "type": "string" - }, - "icon": { - "$ref": "#/$defs/nonEmptyString" - }, - "is_completed": { - "type": "boolean" - }, - "is_skipped": { - "type": "boolean" - }, - "exclude_from_cycle": { - "type": "boolean" - }, - "next_status": { - "$ref": "#/$defs/nonEmptyString" - }, - "order": { - "type": "number" - }, - "auto_archive": { - "type": "boolean" - }, - "auto_archive_delay_minutes": { - "type": "number", - "minimum": 0 - } - }, - "additionalProperties": true - }, - "statusPolicy": { - "type": "object", - "required": [ - "values", - "default", - "completed_values", - "definitions" - ], - "properties": { - "values": { - "$ref": "#/$defs/stringSet" - }, - "default": { - "$ref": "#/$defs/nonEmptyString" - }, - "completed_values": { - "$ref": "#/$defs/stringSet" - }, - "skipped_values": { - "$ref": "#/$defs/stringSet" - }, - "default_skipped": { - "$ref": "#/$defs/nonEmptyString" - }, - "definitions": { - "type": "array", - "items": { - "$ref": "#/$defs/statusDefinition" - } - } - }, - "additionalProperties": false - }, - "priorityDefinition": { - "type": "object", - "required": [ - "value", - "label", - "color", - "weight" - ], - "properties": { - "value": { - "$ref": "#/$defs/nonEmptyString" - }, - "label": { - "type": "string" - }, - "color": { - "type": "string" - }, - "icon": { - "$ref": "#/$defs/nonEmptyString" - }, - "weight": { - "type": "number" - } - }, - "additionalProperties": true - }, - "priorityPolicy": { - "type": "object", - "required": [ - "values", - "default", - "definitions" - ], - "properties": { - "values": { - "$ref": "#/$defs/stringSet" - }, - "default": { - "$ref": "#/$defs/nonEmptyString" - }, - "definitions": { - "type": "array", - "items": { - "$ref": "#/$defs/priorityDefinition" - } - } - }, - "additionalProperties": false - }, - "recurrencePolicy": { - "type": "object", - "required": [ - "syntax", - "maintain_due_date_offset", - "reset_body_checkboxes" - ], - "properties": { - "syntax": { - "const": "tasknotes" - }, - "maintain_due_date_offset": { - "type": "boolean" - }, - "reset_body_checkboxes": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "occurrencePolicy": { - "type": "object", - "required": [ - "identity_roles", - "default_materialization", - "default_next_trigger" - ], - "properties": { - "identity_roles": { - "const": [ - "recurrenceParent", - "occurrenceDate" - ] - }, - "default_materialization": { - "enum": [ - "manual", - "on_completion", - "rolling" - ] - }, - "default_next_trigger": { - "enum": [ - "completion", - "completion_or_skip" - ] - }, - "past_horizon": { - "$ref": "#/$defs/nonEmptyString" - }, - "future_horizon": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "additionalProperties": false - }, - "linkPolicy": { - "type": "object", - "required": [ - "accepted_formats", - "write_format" - ], - "properties": { - "accepted_formats": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "enum": [ - "wikilink", - "markdown" - ] - } - }, - "write_format": { - "enum": [ - "wikilink", - "markdown" - ] - } - }, - "additionalProperties": false - }, - "archivePolicy": { - "type": "object", - "required": [ - "archived_tag", - "move_on_archive" - ], - "properties": { - "archived_tag": { - "$ref": "#/$defs/nonEmptyString" - }, - "move_on_archive": { - "type": "boolean" - }, - "folder": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "additionalProperties": false - }, - "timeTrackingPolicy": { - "type": "object", - "required": [ - "auto_stop_on_complete" - ], - "properties": { - "auto_stop_on_complete": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "templatingPolicy": { - "type": "object", - "required": [ - "enabled", - "occurrence_enabled" - ], - "properties": { - "enabled": { - "type": "boolean" - }, - "template_path": { - "$ref": "#/$defs/nonEmptyString" - }, - "occurrence_enabled": { - "type": "boolean" - }, - "occurrence_template_path": { - "$ref": "#/$defs/nonEmptyString" - }, - "failure_mode": { - "enum": [ - "error", - "warning_fallback" - ] - }, - "unknown_variable_policy": { - "enum": [ - "preserve", - "empty" - ] - } - }, - "additionalProperties": false - }, - "nlpTrigger": { - "type": "object", - "required": [ - "property_id", - "trigger", - "enabled" - ], - "properties": { - "property_id": { - "$ref": "#/$defs/nonEmptyString" - }, - "trigger": { - "$ref": "#/$defs/nonEmptyString" - }, - "enabled": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "nlpPolicy": { - "type": "object", - "required": [ - "triggers" - ], - "properties": { - "triggers": { - "type": "array", - "items": { - "$ref": "#/$defs/nlpTrigger" - } - } - }, - "additionalProperties": false - } - } -} diff --git a/public/contracts/artifacts/schemas/tasknotes.task.binding/0.3.0-rc.4.schema.json b/public/contracts/artifacts/schemas/tasknotes.task.binding/0.3.0-rc.4.schema.json deleted file mode 100644 index af2bcc9..0000000 --- a/public/contracts/artifacts/schemas/tasknotes.task.binding/0.3.0-rc.4.schema.json +++ /dev/null @@ -1,469 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json", - "title": "TaskNotes task data-contract binding", - "description": "Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3.", - "type": "object", - "required": [ - "profiles", - "capabilities", - "title", - "status", - "priority", - "recurrence", - "occurrences", - "links", - "archive", - "time_tracking", - "templating" - ], - "properties": { - "profiles": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "enum": [ - "core-lite", - "recurrence", - "templating", - "materialized-occurrences", - "extended" - ] - } - }, - "capabilities": { - "type": "array", - "uniqueItems": true, - "items": { - "enum": [ - "dependencies", - "reminders", - "attachments", - "links", - "time-tracking", - "materialized-occurrences", - "rename", - "archive", - "batch", - "concurrency", - "dry-run", - "migration", - "templating" - ] - } - }, - "title": { - "$ref": "#/$defs/titlePolicy" - }, - "status": { - "$ref": "#/$defs/statusPolicy" - }, - "priority": { - "$ref": "#/$defs/priorityPolicy" - }, - "recurrence": { - "$ref": "#/$defs/recurrencePolicy" - }, - "occurrences": { - "$ref": "#/$defs/occurrencePolicy" - }, - "links": { - "$ref": "#/$defs/linkPolicy" - }, - "archive": { - "$ref": "#/$defs/archivePolicy" - }, - "time_tracking": { - "$ref": "#/$defs/timeTrackingPolicy" - }, - "templating": { - "$ref": "#/$defs/templatingPolicy" - }, - "nlp": { - "$ref": "#/$defs/nlpPolicy" - } - }, - "additionalProperties": false, - "$defs": { - "nonEmptyString": { - "type": "string", - "minLength": 1 - }, - "stringSet": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "titlePolicy": { - "type": "object", - "required": [ - "storage" - ], - "properties": { - "storage": { - "enum": [ - "filename", - "frontmatter" - ] - }, - "filename_format": { - "enum": [ - "title", - "zettel", - "timestamp", - "uuid", - "custom" - ] - }, - "custom_filename_template": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "allOf": [ - { - "if": { - "properties": { - "filename_format": { - "const": "custom" - } - }, - "required": [ - "filename_format" - ] - }, - "then": { - "properties": { - "custom_filename_template": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "required": [ - "custom_filename_template" - ] - } - } - ], - "additionalProperties": true - }, - "statusDefinition": { - "type": "object", - "required": [ - "value", - "label", - "color", - "is_completed", - "is_skipped", - "exclude_from_cycle", - "order", - "auto_archive", - "auto_archive_delay_minutes" - ], - "properties": { - "value": { - "$ref": "#/$defs/nonEmptyString" - }, - "label": { - "type": "string" - }, - "color": { - "type": "string" - }, - "icon": { - "$ref": "#/$defs/nonEmptyString" - }, - "is_completed": { - "type": "boolean" - }, - "is_skipped": { - "type": "boolean" - }, - "exclude_from_cycle": { - "type": "boolean" - }, - "next_status": { - "$ref": "#/$defs/nonEmptyString" - }, - "order": { - "type": "number" - }, - "auto_archive": { - "type": "boolean" - }, - "auto_archive_delay_minutes": { - "type": "number", - "minimum": 0 - } - }, - "additionalProperties": true - }, - "statusPolicy": { - "type": "object", - "required": [ - "values", - "default", - "completed_values", - "definitions" - ], - "properties": { - "values": { - "$ref": "#/$defs/stringSet" - }, - "default": { - "$ref": "#/$defs/nonEmptyString" - }, - "completed_values": { - "$ref": "#/$defs/stringSet" - }, - "skipped_values": { - "$ref": "#/$defs/stringSet" - }, - "default_skipped": { - "$ref": "#/$defs/nonEmptyString" - }, - "definitions": { - "type": "array", - "items": { - "$ref": "#/$defs/statusDefinition" - } - } - }, - "additionalProperties": false - }, - "priorityDefinition": { - "type": "object", - "required": [ - "value", - "label", - "color", - "weight" - ], - "properties": { - "value": { - "$ref": "#/$defs/nonEmptyString" - }, - "label": { - "type": "string" - }, - "color": { - "type": "string" - }, - "icon": { - "$ref": "#/$defs/nonEmptyString" - }, - "weight": { - "type": "number" - } - }, - "additionalProperties": true - }, - "priorityPolicy": { - "type": "object", - "required": [ - "values", - "default", - "definitions" - ], - "properties": { - "values": { - "$ref": "#/$defs/stringSet" - }, - "default": { - "$ref": "#/$defs/nonEmptyString" - }, - "definitions": { - "type": "array", - "items": { - "$ref": "#/$defs/priorityDefinition" - } - } - }, - "additionalProperties": false - }, - "recurrencePolicy": { - "type": "object", - "required": [ - "syntax", - "maintain_due_date_offset", - "reset_body_checkboxes" - ], - "properties": { - "syntax": { - "const": "tasknotes" - }, - "maintain_due_date_offset": { - "type": "boolean" - }, - "reset_body_checkboxes": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "occurrencePolicy": { - "type": "object", - "required": [ - "identity_roles", - "default_materialization", - "default_next_trigger" - ], - "properties": { - "identity_roles": { - "const": [ - "recurrenceParent", - "occurrenceDate" - ] - }, - "default_materialization": { - "enum": [ - "manual", - "on_completion", - "rolling" - ] - }, - "default_next_trigger": { - "enum": [ - "completion", - "completion_or_skip" - ] - }, - "past_horizon": { - "$ref": "#/$defs/nonEmptyString" - }, - "future_horizon": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "additionalProperties": false - }, - "linkPolicy": { - "type": "object", - "required": [ - "accepted_formats", - "write_format" - ], - "properties": { - "accepted_formats": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "enum": [ - "wikilink", - "markdown" - ] - } - }, - "write_format": { - "enum": [ - "wikilink", - "markdown" - ] - } - }, - "additionalProperties": false - }, - "archivePolicy": { - "type": "object", - "required": [ - "archived_tag", - "move_on_archive" - ], - "properties": { - "archived_tag": { - "$ref": "#/$defs/nonEmptyString" - }, - "move_on_archive": { - "type": "boolean" - }, - "folder": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "additionalProperties": false - }, - "timeTrackingPolicy": { - "type": "object", - "required": [ - "auto_stop_on_complete" - ], - "properties": { - "auto_stop_on_complete": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "templatingPolicy": { - "type": "object", - "required": [ - "enabled", - "occurrence_enabled" - ], - "properties": { - "enabled": { - "type": "boolean" - }, - "template_path": { - "$ref": "#/$defs/nonEmptyString" - }, - "occurrence_enabled": { - "type": "boolean" - }, - "occurrence_template_path": { - "$ref": "#/$defs/nonEmptyString" - }, - "failure_mode": { - "enum": [ - "error", - "warning_fallback" - ] - }, - "unknown_variable_policy": { - "enum": [ - "preserve", - "empty" - ] - } - }, - "additionalProperties": false - }, - "nlpTrigger": { - "type": "object", - "required": [ - "property_id", - "trigger", - "enabled" - ], - "properties": { - "property_id": { - "$ref": "#/$defs/nonEmptyString" - }, - "trigger": { - "$ref": "#/$defs/nonEmptyString" - }, - "enabled": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "nlpPolicy": { - "type": "object", - "required": [ - "triggers" - ], - "properties": { - "triggers": { - "type": "array", - "items": { - "$ref": "#/$defs/nlpTrigger" - } - } - }, - "additionalProperties": false - } - } -} diff --git a/public/contracts/artifacts/schemas/tasknotes.task.binding/0.3.0-rc.5.schema.json b/public/contracts/artifacts/schemas/tasknotes.task.binding/0.3.0-rc.5.schema.json deleted file mode 100644 index af2bcc9..0000000 --- a/public/contracts/artifacts/schemas/tasknotes.task.binding/0.3.0-rc.5.schema.json +++ /dev/null @@ -1,469 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json", - "title": "TaskNotes task data-contract binding", - "description": "Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3.", - "type": "object", - "required": [ - "profiles", - "capabilities", - "title", - "status", - "priority", - "recurrence", - "occurrences", - "links", - "archive", - "time_tracking", - "templating" - ], - "properties": { - "profiles": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "enum": [ - "core-lite", - "recurrence", - "templating", - "materialized-occurrences", - "extended" - ] - } - }, - "capabilities": { - "type": "array", - "uniqueItems": true, - "items": { - "enum": [ - "dependencies", - "reminders", - "attachments", - "links", - "time-tracking", - "materialized-occurrences", - "rename", - "archive", - "batch", - "concurrency", - "dry-run", - "migration", - "templating" - ] - } - }, - "title": { - "$ref": "#/$defs/titlePolicy" - }, - "status": { - "$ref": "#/$defs/statusPolicy" - }, - "priority": { - "$ref": "#/$defs/priorityPolicy" - }, - "recurrence": { - "$ref": "#/$defs/recurrencePolicy" - }, - "occurrences": { - "$ref": "#/$defs/occurrencePolicy" - }, - "links": { - "$ref": "#/$defs/linkPolicy" - }, - "archive": { - "$ref": "#/$defs/archivePolicy" - }, - "time_tracking": { - "$ref": "#/$defs/timeTrackingPolicy" - }, - "templating": { - "$ref": "#/$defs/templatingPolicy" - }, - "nlp": { - "$ref": "#/$defs/nlpPolicy" - } - }, - "additionalProperties": false, - "$defs": { - "nonEmptyString": { - "type": "string", - "minLength": 1 - }, - "stringSet": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "titlePolicy": { - "type": "object", - "required": [ - "storage" - ], - "properties": { - "storage": { - "enum": [ - "filename", - "frontmatter" - ] - }, - "filename_format": { - "enum": [ - "title", - "zettel", - "timestamp", - "uuid", - "custom" - ] - }, - "custom_filename_template": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "allOf": [ - { - "if": { - "properties": { - "filename_format": { - "const": "custom" - } - }, - "required": [ - "filename_format" - ] - }, - "then": { - "properties": { - "custom_filename_template": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "required": [ - "custom_filename_template" - ] - } - } - ], - "additionalProperties": true - }, - "statusDefinition": { - "type": "object", - "required": [ - "value", - "label", - "color", - "is_completed", - "is_skipped", - "exclude_from_cycle", - "order", - "auto_archive", - "auto_archive_delay_minutes" - ], - "properties": { - "value": { - "$ref": "#/$defs/nonEmptyString" - }, - "label": { - "type": "string" - }, - "color": { - "type": "string" - }, - "icon": { - "$ref": "#/$defs/nonEmptyString" - }, - "is_completed": { - "type": "boolean" - }, - "is_skipped": { - "type": "boolean" - }, - "exclude_from_cycle": { - "type": "boolean" - }, - "next_status": { - "$ref": "#/$defs/nonEmptyString" - }, - "order": { - "type": "number" - }, - "auto_archive": { - "type": "boolean" - }, - "auto_archive_delay_minutes": { - "type": "number", - "minimum": 0 - } - }, - "additionalProperties": true - }, - "statusPolicy": { - "type": "object", - "required": [ - "values", - "default", - "completed_values", - "definitions" - ], - "properties": { - "values": { - "$ref": "#/$defs/stringSet" - }, - "default": { - "$ref": "#/$defs/nonEmptyString" - }, - "completed_values": { - "$ref": "#/$defs/stringSet" - }, - "skipped_values": { - "$ref": "#/$defs/stringSet" - }, - "default_skipped": { - "$ref": "#/$defs/nonEmptyString" - }, - "definitions": { - "type": "array", - "items": { - "$ref": "#/$defs/statusDefinition" - } - } - }, - "additionalProperties": false - }, - "priorityDefinition": { - "type": "object", - "required": [ - "value", - "label", - "color", - "weight" - ], - "properties": { - "value": { - "$ref": "#/$defs/nonEmptyString" - }, - "label": { - "type": "string" - }, - "color": { - "type": "string" - }, - "icon": { - "$ref": "#/$defs/nonEmptyString" - }, - "weight": { - "type": "number" - } - }, - "additionalProperties": true - }, - "priorityPolicy": { - "type": "object", - "required": [ - "values", - "default", - "definitions" - ], - "properties": { - "values": { - "$ref": "#/$defs/stringSet" - }, - "default": { - "$ref": "#/$defs/nonEmptyString" - }, - "definitions": { - "type": "array", - "items": { - "$ref": "#/$defs/priorityDefinition" - } - } - }, - "additionalProperties": false - }, - "recurrencePolicy": { - "type": "object", - "required": [ - "syntax", - "maintain_due_date_offset", - "reset_body_checkboxes" - ], - "properties": { - "syntax": { - "const": "tasknotes" - }, - "maintain_due_date_offset": { - "type": "boolean" - }, - "reset_body_checkboxes": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "occurrencePolicy": { - "type": "object", - "required": [ - "identity_roles", - "default_materialization", - "default_next_trigger" - ], - "properties": { - "identity_roles": { - "const": [ - "recurrenceParent", - "occurrenceDate" - ] - }, - "default_materialization": { - "enum": [ - "manual", - "on_completion", - "rolling" - ] - }, - "default_next_trigger": { - "enum": [ - "completion", - "completion_or_skip" - ] - }, - "past_horizon": { - "$ref": "#/$defs/nonEmptyString" - }, - "future_horizon": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "additionalProperties": false - }, - "linkPolicy": { - "type": "object", - "required": [ - "accepted_formats", - "write_format" - ], - "properties": { - "accepted_formats": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "enum": [ - "wikilink", - "markdown" - ] - } - }, - "write_format": { - "enum": [ - "wikilink", - "markdown" - ] - } - }, - "additionalProperties": false - }, - "archivePolicy": { - "type": "object", - "required": [ - "archived_tag", - "move_on_archive" - ], - "properties": { - "archived_tag": { - "$ref": "#/$defs/nonEmptyString" - }, - "move_on_archive": { - "type": "boolean" - }, - "folder": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "additionalProperties": false - }, - "timeTrackingPolicy": { - "type": "object", - "required": [ - "auto_stop_on_complete" - ], - "properties": { - "auto_stop_on_complete": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "templatingPolicy": { - "type": "object", - "required": [ - "enabled", - "occurrence_enabled" - ], - "properties": { - "enabled": { - "type": "boolean" - }, - "template_path": { - "$ref": "#/$defs/nonEmptyString" - }, - "occurrence_enabled": { - "type": "boolean" - }, - "occurrence_template_path": { - "$ref": "#/$defs/nonEmptyString" - }, - "failure_mode": { - "enum": [ - "error", - "warning_fallback" - ] - }, - "unknown_variable_policy": { - "enum": [ - "preserve", - "empty" - ] - } - }, - "additionalProperties": false - }, - "nlpTrigger": { - "type": "object", - "required": [ - "property_id", - "trigger", - "enabled" - ], - "properties": { - "property_id": { - "$ref": "#/$defs/nonEmptyString" - }, - "trigger": { - "$ref": "#/$defs/nonEmptyString" - }, - "enabled": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "nlpPolicy": { - "type": "object", - "required": [ - "triggers" - ], - "properties": { - "triggers": { - "type": "array", - "items": { - "$ref": "#/$defs/nlpTrigger" - } - } - }, - "additionalProperties": false - } - } -} diff --git a/public/contracts/artifacts/schemas/tasknotes.task/0.3.0-rc.3.schema.json b/public/contracts/artifacts/schemas/tasknotes.task/0.3.0-rc.3.schema.json deleted file mode 100644 index 9c4f1b9..0000000 --- a/public/contracts/artifacts/schemas/tasknotes.task/0.3.0-rc.3.schema.json +++ /dev/null @@ -1,192 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://tasknotes.dev/schemas/tasknotes-task.schema.json", - "title": "TaskNotes portable task view", - "description": "The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.3 record contract.", - "type": "object", - "required": [ - "status", - "dateCreated" - ], - "additionalProperties": false, - "properties": { - "id": { - "type": "string", - "minLength": 1 - }, - "title": { - "type": "string", - "minLength": 1 - }, - "status": { - "type": "string", - "minLength": 1 - }, - "priority": { - "type": "string", - "minLength": 1 - }, - "due": { - "anyOf": [ - { - "type": "string", - "format": "date" - }, - { - "type": "string", - "format": "date-time" - } - ] - }, - "scheduled": { - "anyOf": [ - { - "type": "string", - "format": "date" - }, - { - "type": "string", - "format": "date-time" - } - ] - }, - "contexts": { - "type": "array", - "items": { - "type": "string" - } - }, - "projects": { - "type": "array", - "items": { - "type": "string" - } - }, - "attachments": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "minLength": 1 - } - }, - "timeEstimate": { - "type": "integer", - "minimum": 0 - }, - "completedDate": { - "type": "string", - "format": "date" - }, - "dateCreated": { - "type": "string", - "format": "date-time" - }, - "dateModified": { - "type": "string", - "format": "date-time" - }, - "recurrence": { - "type": "string" - }, - "recurrenceAnchor": { - "enum": [ - "scheduled", - "completion" - ] - }, - "recurrenceParent": { - "type": "string" - }, - "occurrenceDate": { - "type": "string", - "format": "date" - }, - "occurrenceMaterialization": { - "enum": [ - "manual", - "on_completion", - "rolling" - ] - }, - "occurrenceNextTrigger": { - "enum": [ - "completion", - "completion_or_skip" - ] - }, - "occurrenceTemplate": { - "type": "string" - }, - "occurrencePastHorizon": { - "type": "string" - }, - "occurrenceFutureHorizon": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "timeEntries": { - "type": "array", - "items": { - "type": "object" - } - }, - "reminders": { - "type": "array", - "items": { - "type": "object" - } - }, - "blockedBy": { - "type": "array", - "items": { - "type": "object" - } - }, - "completeInstances": { - "type": "array", - "items": { - "type": "string", - "format": "date" - } - }, - "skippedInstances": { - "type": "array", - "items": { - "type": "string", - "format": "date" - } - }, - "icsEventId": { - "type": "array", - "items": { - "type": "string" - } - }, - "googleCalendarEventId": { - "type": "string" - }, - "googleCalendarExceptionEventId": { - "type": "string" - }, - "googleCalendarExceptionOriginalScheduled": { - "type": "string", - "format": "date" - }, - "googleCalendarMovedOriginalDates": { - "type": "array", - "items": { - "type": "string", - "format": "date" - } - }, - "sortOrder": { - "type": "string" - } - } -} diff --git a/public/contracts/artifacts/schemas/tasknotes.task/0.3.0-rc.4.schema.json b/public/contracts/artifacts/schemas/tasknotes.task/0.3.0-rc.4.schema.json deleted file mode 100644 index 56c1803..0000000 --- a/public/contracts/artifacts/schemas/tasknotes.task/0.3.0-rc.4.schema.json +++ /dev/null @@ -1,202 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://tasknotes.dev/schemas/tasknotes-task.schema.json", - "title": "TaskNotes portable task view", - "description": "The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.4 record contract.", - "type": "object", - "required": [ - "status", - "dateCreated" - ], - "additionalProperties": false, - "properties": { - "id": { - "type": "string", - "minLength": 1 - }, - "title": { - "type": "string", - "minLength": 1 - }, - "status": { - "type": "string", - "minLength": 1 - }, - "priority": { - "type": "string", - "minLength": 1 - }, - "due": { - "anyOf": [ - { - "type": "string", - "format": "date" - }, - { - "type": "string", - "format": "date-time" - } - ] - }, - "scheduled": { - "anyOf": [ - { - "type": "string", - "format": "date" - }, - { - "type": "string", - "format": "date-time" - } - ] - }, - "contexts": { - "type": "array", - "items": { - "type": "string" - } - }, - "projects": { - "type": "array", - "items": { - "type": "string" - } - }, - "assignees": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "minLength": 1, - "pattern": "\\S" - }, - "description": "Stable mdbase.person IDs. These references never grant collection access." - }, - "attachments": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "minLength": 1 - } - }, - "timeEstimate": { - "type": "integer", - "minimum": 0 - }, - "completedDate": { - "type": "string", - "format": "date" - }, - "dateCreated": { - "type": "string", - "format": "date-time" - }, - "dateModified": { - "type": "string", - "format": "date-time" - }, - "recurrence": { - "type": "string" - }, - "recurrenceAnchor": { - "enum": [ - "scheduled", - "completion" - ] - }, - "recurrenceParent": { - "type": "string" - }, - "occurrenceDate": { - "type": "string", - "format": "date" - }, - "occurrenceMaterialization": { - "enum": [ - "manual", - "on_completion", - "rolling" - ] - }, - "occurrenceNextTrigger": { - "enum": [ - "completion", - "completion_or_skip" - ] - }, - "occurrenceTemplate": { - "type": "string" - }, - "occurrencePastHorizon": { - "type": "string" - }, - "occurrenceFutureHorizon": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "timeEntries": { - "type": "array", - "items": { - "type": "object" - } - }, - "reminders": { - "type": "array", - "items": { - "type": "object" - } - }, - "blockedBy": { - "type": "array", - "items": { - "type": "object" - } - }, - "completeInstances": { - "type": "array", - "items": { - "type": "string", - "format": "date" - } - }, - "skippedInstances": { - "type": "array", - "items": { - "type": "string", - "format": "date" - } - }, - "icsEventId": { - "type": "array", - "items": { - "type": "string" - } - }, - "googleCalendarEventId": { - "type": "string" - }, - "googleCalendarExceptionEventId": { - "type": "string" - }, - "googleCalendarExceptionOriginalScheduled": { - "type": "string", - "format": "date" - }, - "googleCalendarMovedOriginalDates": { - "type": "array", - "items": { - "type": "string", - "format": "date" - } - }, - "sortOrder": { - "type": "string" - } - } -} diff --git a/public/contracts/artifacts/schemas/tasknotes.task/0.3.0-rc.5.schema.json b/public/contracts/artifacts/schemas/tasknotes.task/0.3.0-rc.5.schema.json deleted file mode 100644 index 8944161..0000000 --- a/public/contracts/artifacts/schemas/tasknotes.task/0.3.0-rc.5.schema.json +++ /dev/null @@ -1,202 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://tasknotes.dev/schemas/tasknotes-task.schema.json", - "title": "TaskNotes portable task view", - "description": "The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.5 record contract.", - "type": "object", - "required": [ - "status", - "dateCreated" - ], - "additionalProperties": false, - "properties": { - "id": { - "type": "string", - "minLength": 1 - }, - "title": { - "type": "string", - "minLength": 1 - }, - "status": { - "type": "string", - "minLength": 1 - }, - "priority": { - "type": "string", - "minLength": 1 - }, - "due": { - "anyOf": [ - { - "type": "string", - "format": "date" - }, - { - "type": "string", - "format": "date-time" - } - ] - }, - "scheduled": { - "anyOf": [ - { - "type": "string", - "format": "date" - }, - { - "type": "string", - "format": "date-time" - } - ] - }, - "contexts": { - "type": "array", - "items": { - "type": "string" - } - }, - "projects": { - "type": "array", - "items": { - "type": "string" - } - }, - "assignees": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "minLength": 1, - "pattern": "\\S" - }, - "description": "Links to records implementing mdbase.person, such as [[Alex Rivera]]. Implementing types declare this field in collection.links. These references never grant collection access." - }, - "attachments": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "minLength": 1 - } - }, - "timeEstimate": { - "type": "integer", - "minimum": 0 - }, - "completedDate": { - "type": "string", - "format": "date" - }, - "dateCreated": { - "type": "string", - "format": "date-time" - }, - "dateModified": { - "type": "string", - "format": "date-time" - }, - "recurrence": { - "type": "string" - }, - "recurrenceAnchor": { - "enum": [ - "scheduled", - "completion" - ] - }, - "recurrenceParent": { - "type": "string" - }, - "occurrenceDate": { - "type": "string", - "format": "date" - }, - "occurrenceMaterialization": { - "enum": [ - "manual", - "on_completion", - "rolling" - ] - }, - "occurrenceNextTrigger": { - "enum": [ - "completion", - "completion_or_skip" - ] - }, - "occurrenceTemplate": { - "type": "string" - }, - "occurrencePastHorizon": { - "type": "string" - }, - "occurrenceFutureHorizon": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "timeEntries": { - "type": "array", - "items": { - "type": "object" - } - }, - "reminders": { - "type": "array", - "items": { - "type": "object" - } - }, - "blockedBy": { - "type": "array", - "items": { - "type": "object" - } - }, - "completeInstances": { - "type": "array", - "items": { - "type": "string", - "format": "date" - } - }, - "skippedInstances": { - "type": "array", - "items": { - "type": "string", - "format": "date" - } - }, - "icsEventId": { - "type": "array", - "items": { - "type": "string" - } - }, - "googleCalendarEventId": { - "type": "string" - }, - "googleCalendarExceptionEventId": { - "type": "string" - }, - "googleCalendarExceptionOriginalScheduled": { - "type": "string", - "format": "date" - }, - "googleCalendarMovedOriginalDates": { - "type": "array", - "items": { - "type": "string", - "format": "date" - } - }, - "sortOrder": { - "type": "string" - } - } -} diff --git a/public/contracts/artifacts/types/comment/1.md b/public/contracts/artifacts/types/comment/1.md deleted file mode 100644 index fc439af..0000000 --- a/public/contracts/artifacts/types/comment/1.md +++ /dev/null @@ -1,235 +0,0 @@ ---- -kind: mdbase.type -name: comment -version: 1 -description: A comment, reply or suggested edit on another note, anchored to a passage of its text. -match: - where: - type: comment -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - title: Comment - description: A comment, reply or suggested edit on a Markdown record, stored as its own record. The comment's Markdown body is its text. - type: object - required: - - type - - document - - created_at - properties: - type: - const: comment - description: Identifies this note as a Comment. Set by the application that creates it. - document: - type: string - pattern: \S - description: Link to the commented record, such as [[chapters/method]]. Replies repeat their thread's document so one query finds a record's whole discussion. - in_reply_to: - type: string - pattern: \S - description: Link to the first comment of the thread this comment replies to. Absent on the first comment of a thread. - motivation: - enum: - - commenting - - replying - - editing - default: commenting - description: commenting starts a thread, replying answers one, and editing suggests replacing the target's text. - target: - type: object - description: Where in the document the thread is anchored. Absent means the whole record. Only the first comment of a thread has a target. - properties: - quote: - type: object - description: The anchored text and the text around it. The quote is authoritative; positions are a hint. - required: - - exact - properties: - exact: - type: string - description: The anchored text exactly as it appears in the record body. Empty for an insertion point, which prefix or suffix then locates. - prefix: - type: string - description: Text immediately before exact, to tell repeated occurrences apart. - suffix: - type: string - description: Text immediately after exact, to tell repeated occurrences apart. - if: - required: - - exact - properties: - exact: - type: string - maxLength: 0 - then: - anyOf: - - required: - - prefix - properties: - prefix: - type: string - minLength: 1 - - required: - - suffix - properties: - suffix: - type: string - minLength: 1 - additionalProperties: false - text_position: - type: object - description: Offsets of the quote in one revision of the record body. - required: - - basis - - unit - - start - - end - properties: - basis: - type: object - required: - - profile - - hash - properties: - profile: - const: markdown-body - description: Offsets count the record's Markdown body as stored, after the frontmatter, so frontmatter edits never move them. - hash: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - description: SHA-256 of the UTF-8 body the offsets were measured in. - additionalProperties: false - unit: - const: unicode_code_point - start: - type: integer - minimum: 0 - end: - type: integer - minimum: 0 - additionalProperties: false - required: - - quote - additionalProperties: false - suggestion: - type: object - description: "The suggested edit of an editing comment: replace the target's quote with replacement." - required: - - replacement - properties: - replacement: - type: string - description: The text to put in place of the quote. Empty suggests deleting it. - outcome: - enum: - - accepted - - rejected - description: What happened to the suggestion once its thread was resolved. - additionalProperties: false - status: - enum: - - open - - resolved - default: open - description: Whether the thread is still open. Only meaningful on the first comment of a thread. - resolved_by: - type: string - pattern: \S - description: Link to the mdbase.person record of who resolved the thread. - resolved_at: - type: string - format: date-time - created_by: - type: string - pattern: \S - description: Link to the mdbase.person record of the comment's author. Absent when the author has no person record. - created_at: - type: string - format: date-time - modified_at: - type: string - format: date-time - deleted_at: - type: string - format: date-time - description: When the comment was withdrawn. The record stays so its thread and replies keep their shape; its body should be emptied. - allOf: - - if: - properties: - motivation: - const: editing - required: - - motivation - then: - required: - - target - - suggestion - properties: - target: - type: object - suggestion: - type: object - additionalProperties: true -collection: - links: - document: - target_type: any - validate_exists: false - in_reply_to: - target_type: comment - validate_exists: false - created_by: - target_type: any - validate_exists: false - resolved_by: - target_type: any - validate_exists: false - display: - description_field: document - icon: chat-circle -implements: - - contract: mdbase.comment - version: 1.0.0 - fields: - document: document - in_reply_to: in_reply_to - motivation: motivation - target: target - suggestion: suggestion - status: status - resolved_by: resolved_by - resolved_at: resolved_at - created_by: created_by - created_at: created_at - modified_at: modified_at - deleted_at: deleted_at ---- - -# Comment - -One note per comment, reply or suggested edit. Apps create these for you; the -commented note itself is never changed by commenting on it. - -```yaml -type: comment -document: "[[chapters/method]]" -target: - quote: { exact: "suggests strongly", prefix: "the evidence ", suffix: " that" } -created_by: "[[Alex Rivera]]" -created_at: 2026-09-29T10:00:00Z -``` - -The note's body is the comment's text. A reply is another Comment note whose -`in_reply_to` links to the thread's first comment. A suggested edit has -`motivation: editing` and a `suggestion.replacement`. - -`document`, `in_reply_to`, `created_by` and `resolved_by` are links, so -renaming or moving a note with a tool that updates references keeps them -current. Links to a note that has since been deleted are kept, not treated as -errors. `created_by` and `resolved_by` link to Person notes; they are -editable data, not proof of who wrote a comment. - -This type belongs to your collection once installed. You can add fields, or -rename fields and update the `implements` mapping; apps read comments through -the `mdbase.comment` contract, not through these local names. diff --git a/public/contracts/artifacts/types/comment/2.md b/public/contracts/artifacts/types/comment/2.md deleted file mode 100644 index 0917d01..0000000 --- a/public/contracts/artifacts/types/comment/2.md +++ /dev/null @@ -1,231 +0,0 @@ ---- -kind: mdbase.type -name: comment -version: 2 -description: A comment, reply or suggested edit on another note, anchored to a passage of its text. -match: - where: - type: comment -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - title: Comment - description: A comment, reply or suggested edit on a Markdown record, stored as its own record. The comment's Markdown body is its text. - type: object - required: - - document - - created_at - properties: - document: - type: string - pattern: \S - description: Link to the commented record, such as [[chapters/method]]. Replies repeat their thread's document so one query finds a record's whole discussion. - in_reply_to: - type: string - pattern: \S - description: Link to the first comment of the thread this comment replies to. Absent on the first comment of a thread. - motivation: - enum: - - commenting - - replying - - editing - default: commenting - description: commenting starts a thread, replying answers one, and editing suggests replacing the target's text. - target: - type: object - description: Where in the document the thread is anchored. Absent means the whole record. Only the first comment of a thread has a target. - properties: - quote: - type: object - description: The anchored text and the text around it. The quote is authoritative; positions are a hint. - required: - - exact - properties: - exact: - type: string - description: The anchored text exactly as it appears in the record body. Empty for an insertion point, which prefix or suffix then locates. - prefix: - type: string - description: Text immediately before exact, to tell repeated occurrences apart. - suffix: - type: string - description: Text immediately after exact, to tell repeated occurrences apart. - if: - required: - - exact - properties: - exact: - type: string - maxLength: 0 - then: - anyOf: - - required: - - prefix - properties: - prefix: - type: string - minLength: 1 - - required: - - suffix - properties: - suffix: - type: string - minLength: 1 - additionalProperties: false - text_position: - type: object - description: Offsets of the quote in one revision of the record body. - required: - - basis - - unit - - start - - end - properties: - basis: - type: object - required: - - profile - - hash - properties: - profile: - const: markdown-body - description: Offsets count the record's Markdown body as stored, after the frontmatter, so frontmatter edits never move them. - hash: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - description: SHA-256 of the UTF-8 body the offsets were measured in. - additionalProperties: false - unit: - const: unicode_code_point - start: - type: integer - minimum: 0 - end: - type: integer - minimum: 0 - additionalProperties: false - required: - - quote - additionalProperties: false - suggestion: - type: object - description: "The suggested edit of an editing comment: replace the target's quote with replacement." - required: - - replacement - properties: - replacement: - type: string - description: The text to put in place of the quote. Empty suggests deleting it. - outcome: - enum: - - accepted - - rejected - description: What happened to the suggestion once its thread was resolved. - additionalProperties: false - status: - enum: - - open - - resolved - default: open - description: Whether the thread is still open. Only meaningful on the first comment of a thread. - resolved_by: - type: string - pattern: \S - description: Link to the mdbase.person record of who resolved the thread. - resolved_at: - type: string - format: date-time - created_by: - type: string - pattern: \S - description: Link to the mdbase.person record of the comment's author. Absent when the author has no person record. - created_at: - type: string - format: date-time - modified_at: - type: string - format: date-time - deleted_at: - type: string - format: date-time - description: When the comment was withdrawn. The record stays so its thread and replies keep their shape; its body should be emptied. - allOf: - - if: - properties: - motivation: - const: editing - required: - - motivation - then: - required: - - target - - suggestion - properties: - target: - type: object - suggestion: - type: object - additionalProperties: true -collection: - links: - document: - target_type: any - validate_exists: false - in_reply_to: - target_type: comment - validate_exists: false - created_by: - target_type: any - validate_exists: false - resolved_by: - target_type: any - validate_exists: false - display: - description_field: document - icon: chat-circle -implements: - - contract: mdbase.comment - version: 1.0.0 - fields: - document: document - in_reply_to: in_reply_to - motivation: motivation - target: target - suggestion: suggestion - status: status - resolved_by: resolved_by - resolved_at: resolved_at - created_by: created_by - created_at: created_at - modified_at: modified_at - deleted_at: deleted_at ---- - -# Comment - -One note per comment, reply or suggested edit. Apps create these for you; the -commented note itself is never changed by commenting on it. - -```yaml -type: comment -document: "[[chapters/method]]" -target: - quote: { exact: "suggests strongly", prefix: "the evidence ", suffix: " that" } -created_by: "[[Alex Rivera]]" -created_at: 2026-09-29T10:00:00Z -``` - -The note's body is the comment's text. A reply is another Comment note whose -`in_reply_to` links to the thread's first comment. A suggested edit has -`motivation: editing` and a `suggestion.replacement`. - -`document`, `in_reply_to`, `created_by` and `resolved_by` are links, so -renaming or moving a note with a tool that updates references keeps them -current. Links to a note that has since been deleted are kept, not treated as -errors. `created_by` and `resolved_by` link to Person notes; they are -editable data, not proof of who wrote a comment. - -This type belongs to your collection once installed. You can add fields, or -rename fields and update the `implements` mapping; apps read comments through -the `mdbase.comment` contract, not through these local names. diff --git a/public/contracts/artifacts/types/contact/1.md b/public/contracts/artifacts/types/contact/1.md deleted file mode 100644 index 7cbc9fc..0000000 --- a/public/contracts/artifacts/types/contact/1.md +++ /dev/null @@ -1,224 +0,0 @@ ---- -kind: mdbase.type -name: contact -version: 1 -description: A fully expanded, editable Markdown-backed Contact using JSContact 2.0 -match: - where: - /@type: Card - version: "2.0" -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - title: Contact - description: A local starting shape for a person or organisation using IETF JSContact 2.0. - type: object - required: - - "@type" - - version - properties: - "@type": - const: Card - version: - const: "2.0" - uid: - type: string - minLength: 1 - kind: - enum: - - individual - - group - - org - - location - - device - - application - name: - type: object - properties: - "@type": - const: Name - components: - type: array - minItems: 1 - contains: - type: object - required: - - kind - properties: - kind: - not: - const: separator - items: - type: object - required: - - kind - - value - properties: - "@type": - const: NameComponent - kind: - enum: - - credential - - generation - - given - - given2 - - separator - - surname - - surname2 - - title - value: - type: string - additionalProperties: false - full: - type: string - minLength: 1 - isOrdered: - type: boolean - defaultSeparator: - type: string - anyOf: - - required: - - components - - required: - - full - additionalProperties: false - emails: - type: object - propertyNames: - type: string - minLength: 1 - additionalProperties: - type: object - required: - - address - properties: - "@type": - const: EmailAddress - address: - type: string - format: email - contexts: - type: object - additionalProperties: - const: true - pref: - type: integer - minimum: 1 - label: - type: string - additionalProperties: false - phones: - type: object - propertyNames: - type: string - minLength: 1 - additionalProperties: - type: object - required: - - number - properties: - "@type": - const: Phone - number: - type: string - minLength: 1 - features: - type: object - additionalProperties: - const: true - contexts: - type: object - additionalProperties: - const: true - pref: - type: integer - minimum: 1 - label: - type: string - additionalProperties: false - organizations: - type: object - propertyNames: - type: string - minLength: 1 - additionalProperties: - type: object - properties: - "@type": - const: Organization - name: - type: string - minLength: 1 - units: - type: array - minItems: 1 - items: - type: object - required: - - name - properties: - "@type": - const: OrgUnit - name: - type: string - minLength: 1 - additionalProperties: false - sortAs: - type: string - contexts: - type: object - additionalProperties: - const: true - anyOf: - - required: - - name - - required: - - units - additionalProperties: false - notes: - type: object - propertyNames: - type: string - minLength: 1 - additionalProperties: - type: object - required: - - note - properties: - "@type": - const: Note - note: - type: string - created: - type: string - format: date-time - additionalProperties: false - additionalProperties: false -collection: - display: - name_field: /name/full -implements: - - contract: mdbase.jscontact.card - version: 2.0.0 - fields: - /@type: /@type - version: version - uid: uid - kind: kind - name: name - emails: emails - phones: phones - organizations: organizations - notes: notes ---- - -# Contact - -This type begins as a fully expanded local copy of the JSContact core profile. -Nested fields are declared inline so the type editor can edit them directly. -Its fields belong to the collection and can be added, renamed, or reshaped. -Update the explicit contract mapping whenever a compatible field moves. - -The separately installed contract schema remains the portable boundary. Local -fields that are not mapped into that boundary remain collection-specific. diff --git a/public/contracts/artifacts/types/contact/2.md b/public/contracts/artifacts/types/contact/2.md deleted file mode 100644 index 38a862e..0000000 --- a/public/contracts/artifacts/types/contact/2.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -kind: mdbase.type -name: contact -version: 1 -description: A person or organisation you want to stay in touch with -match: - where: - type: contact -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - title: Contact - description: A friendly local contact with room for collection-specific fields. - type: object - required: - - type - - name - properties: - type: - const: contact - name: - type: string - minLength: 1 - description: The name shown in contact lists. - kind: - type: string - enum: - - individual - - organisation - - group - default: individual - description: The broad kind of contact. - email: - type: string - format: email - description: The preferred email address. - phone: - type: string - minLength: 1 - description: The preferred telephone number. - organisation: - type: string - minLength: 1 - description: The contact's main organisation. - birthday: - type: string - format: date - description: The contact's birthday. - additionalProperties: true -collection: - display: - name_field: name - description_field: organisation - icon: address-book -implements: - - contract: mdbase.contact - version: 1.0.0 - fields: - name: name - kind: kind - primary_email: email - primary_phone: phone - organisation: organisation - birthday: birthday ---- - -# Contact - -Contact notes use familiar frontmatter fields and leave the Markdown body free -for history, context, and anything else worth remembering. Applications using -the `mdbase.contact` contract see only the mapped contact fields. - -You can rename or extend the local fields in mdbase-editor. Keep the contract -mapping aligned so other contact-aware applications continue to understand -the type. diff --git a/public/contracts/artifacts/types/jscontact-card/1.md b/public/contracts/artifacts/types/jscontact-card/1.md deleted file mode 100644 index f7d489d..0000000 --- a/public/contracts/artifacts/types/jscontact-card/1.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -kind: mdbase.type -name: jscontact-card -version: 1 -description: A Markdown-backed JSContact 2.0 core Card -match: - where: - /@type: Card - version: "2.0" -schema: - dialect: json-schema-2020-12 - ref: ../schemas/mdbase.jscontact.card/2.0.0.schema.json -collection: - display: - name_field: /name/full -implements: - - contract: mdbase.jscontact.card - version: 2.0.0 - fields: - /@type: /@type - version: version - uid: uid - kind: kind - name: name - emails: emails - phones: phones - organizations: organizations - notes: notes ---- - -# JSContact Card - -This starter type stores the strict core profile directly in Markdown -frontmatter. Records identify themselves with: - -```yaml -"@type": Card -version: "2.0" -``` - -The Markdown body remains available for unstructured context that is not part -of the portable JSContact view. - diff --git a/public/contracts/artifacts/types/jscontact-card/2.md b/public/contracts/artifacts/types/jscontact-card/2.md deleted file mode 100644 index 4af1f65..0000000 --- a/public/contracts/artifacts/types/jscontact-card/2.md +++ /dev/null @@ -1,233 +0,0 @@ ---- -kind: mdbase.type -name: jscontact-card -version: 2 -description: An editable Markdown-backed JSContact 2.0 core Card -match: - where: - /@type: Card - version: "2.0" -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - title: JSContact Card 2.0 core profile - description: A local starting shape for an IETF JSContact 2.0 Card. - type: object - required: - - "@type" - - version - properties: - "@type": - const: Card - version: - const: "2.0" - uid: - type: string - minLength: 1 - kind: - enum: - - individual - - group - - org - - location - - device - - application - name: - $ref: "#/$defs/name" - emails: - type: object - propertyNames: - $ref: "#/$defs/id" - additionalProperties: - $ref: "#/$defs/emailAddress" - phones: - type: object - propertyNames: - $ref: "#/$defs/id" - additionalProperties: - $ref: "#/$defs/phone" - organizations: - type: object - propertyNames: - $ref: "#/$defs/id" - additionalProperties: - $ref: "#/$defs/organization" - notes: - type: object - propertyNames: - $ref: "#/$defs/id" - additionalProperties: - $ref: "#/$defs/note" - additionalProperties: false - $defs: - id: - type: string - minLength: 1 - trueSet: - type: object - additionalProperties: - const: true - name: - type: object - properties: - "@type": - const: Name - components: - type: array - minItems: 1 - contains: - type: object - required: - - kind - properties: - kind: - not: - const: separator - items: - $ref: "#/$defs/nameComponent" - full: - type: string - minLength: 1 - isOrdered: - type: boolean - defaultSeparator: - type: string - anyOf: - - required: - - components - - required: - - full - additionalProperties: false - nameComponent: - type: object - required: - - kind - - value - properties: - "@type": - const: NameComponent - kind: - enum: - - credential - - generation - - given - - given2 - - separator - - surname - - surname2 - - title - value: - type: string - additionalProperties: false - emailAddress: - type: object - required: - - address - properties: - "@type": - const: EmailAddress - address: - type: string - format: email - contexts: - $ref: "#/$defs/trueSet" - pref: - type: integer - minimum: 1 - label: - type: string - additionalProperties: false - phone: - type: object - required: - - number - properties: - "@type": - const: Phone - number: - type: string - minLength: 1 - features: - $ref: "#/$defs/trueSet" - contexts: - $ref: "#/$defs/trueSet" - pref: - type: integer - minimum: 1 - label: - type: string - additionalProperties: false - organization: - type: object - properties: - "@type": - const: Organization - name: - type: string - minLength: 1 - units: - type: array - minItems: 1 - items: - $ref: "#/$defs/orgUnit" - sortAs: - type: string - contexts: - $ref: "#/$defs/trueSet" - anyOf: - - required: - - name - - required: - - units - additionalProperties: false - orgUnit: - type: object - required: - - name - properties: - "@type": - const: OrgUnit - name: - type: string - minLength: 1 - additionalProperties: false - note: - type: object - required: - - note - properties: - "@type": - const: Note - note: - type: string - created: - type: string - format: date-time - additionalProperties: false -collection: - display: - name_field: /name/full -implements: - - contract: mdbase.jscontact.card - version: 2.0.0 - fields: - /@type: /@type - version: version - uid: uid - kind: kind - name: name - emails: emails - phones: phones - organizations: organizations - notes: notes ---- - -# JSContact Card - -This starter type begins as a local copy of the JSContact core profile. Its -fields belong to the collection and can be added, renamed, or reshaped. Update -the explicit contract mapping whenever a compatible field moves. - -The separately installed contract schema remains the portable boundary. Local -fields that are not mapped into that boundary remain collection-specific. diff --git a/public/contracts/artifacts/types/jscontact-card/3.md b/public/contracts/artifacts/types/jscontact-card/3.md deleted file mode 100644 index b44e1a5..0000000 --- a/public/contracts/artifacts/types/jscontact-card/3.md +++ /dev/null @@ -1,225 +0,0 @@ ---- -kind: mdbase.type -name: jscontact-card -version: 3 -description: A fully expanded, editable Markdown-backed JSContact 2.0 core Card -match: - where: - /@type: Card - version: "2.0" -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - title: JSContact Card 2.0 core profile - description: A local starting shape for an IETF JSContact 2.0 Card. - type: object - required: - - "@type" - - version - properties: - "@type": - const: Card - version: - const: "2.0" - uid: - type: string - minLength: 1 - kind: - enum: - - individual - - group - - org - - location - - device - - application - name: - type: object - properties: - "@type": - const: Name - components: - type: array - minItems: 1 - contains: - type: object - required: - - kind - properties: - kind: - not: - const: separator - items: - type: object - required: - - kind - - value - properties: - "@type": - const: NameComponent - kind: - enum: - - credential - - generation - - given - - given2 - - separator - - surname - - surname2 - - title - value: - type: string - additionalProperties: false - full: - type: string - minLength: 1 - isOrdered: - type: boolean - defaultSeparator: - type: string - anyOf: - - required: - - components - - required: - - full - additionalProperties: false - emails: - type: object - propertyNames: - type: string - minLength: 1 - additionalProperties: - type: object - required: - - address - properties: - "@type": - const: EmailAddress - address: - type: string - format: email - contexts: - type: object - additionalProperties: - const: true - pref: - type: integer - minimum: 1 - label: - type: string - additionalProperties: false - phones: - type: object - propertyNames: - type: string - minLength: 1 - additionalProperties: - type: object - required: - - number - properties: - "@type": - const: Phone - number: - type: string - minLength: 1 - features: - type: object - additionalProperties: - const: true - contexts: - type: object - additionalProperties: - const: true - pref: - type: integer - minimum: 1 - label: - type: string - additionalProperties: false - organizations: - type: object - propertyNames: - type: string - minLength: 1 - additionalProperties: - type: object - properties: - "@type": - const: Organization - name: - type: string - minLength: 1 - units: - type: array - minItems: 1 - items: - type: object - required: - - name - properties: - "@type": - const: OrgUnit - name: - type: string - minLength: 1 - additionalProperties: false - sortAs: - type: string - contexts: - type: object - additionalProperties: - const: true - anyOf: - - required: - - name - - required: - - units - additionalProperties: false - notes: - type: object - propertyNames: - type: string - minLength: 1 - additionalProperties: - type: object - required: - - note - properties: - "@type": - const: Note - note: - type: string - created: - type: string - format: date-time - additionalProperties: false - additionalProperties: false -collection: - display: - name_field: /name/full -implements: - - contract: mdbase.jscontact.card - version: 2.0.0 - fields: - /@type: /@type - version: version - uid: uid - kind: kind - name: name - emails: emails - phones: phones - organizations: organizations - notes: notes ---- - -# JSContact Card - -This starter type begins as a fully expanded local copy of the JSContact core -profile. Nested fields are declared inline so the type editor can edit them -directly. Its fields belong to the collection and can be added, renamed, or -reshaped. Update the explicit contract mapping whenever a compatible field -moves. - -The separately installed contract schema remains the portable boundary. Local -fields that are not mapped into that boundary remain collection-specific. diff --git a/public/contracts/artifacts/types/mdbase-runtime/action-attempt.md b/public/contracts/artifacts/types/mdbase-runtime/action-attempt.md deleted file mode 100644 index edd8505..0000000 --- a/public/contracts/artifacts/types/mdbase-runtime/action-attempt.md +++ /dev/null @@ -1,216 +0,0 @@ ---- -kind: mdbase.type -name: runtime_action_attempt -version: 1 -description: Canonical Markdown implementation of mdbase.runtime.action-attempt. -match: - where: - type: runtime_action_attempt -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - title: mdbase durable runtime action attempt - type: object - required: - - type - - id - - run_id - - step_id - - request_id - - invocation_id - - attempt_id - - contract - - provider - - provider_declaration_digest - - status - - created_at - - updated_at - properties: - type: - const: runtime_action_attempt - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - run_id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - step_id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - request_id: - type: string - minLength: 1 - invocation_id: - type: string - minLength: 1 - attempt_id: - type: string - minLength: 1 - contract: - $ref: "#/$defs/exactContractReference" - provider: - $ref: "#/$defs/identity" - provider_declaration_digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - handler_id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - idempotency_key: - type: string - status: - enum: - - admitted - - dispatching - - succeeded - - rejected - - failed - - cancelled - - indeterminate - request: - type: object - invocation: - type: object - outcome: - type: object - created_at: - type: string - format: date-time - updated_at: - type: string - format: date-time - completed_at: - type: string - format: date-time - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - $defs: - identifier: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - semanticVersion: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - dateTime: - type: string - format: date-time - contractRequirement: - type: object - required: - - id - - version - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - minLength: 1 - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - exactContractReference: - type: object - required: - - id - - version - - digest - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - identity: - type: object - required: - - application - - implementation - - version - properties: - application: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - implementation: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - instance_id: - type: string - minLength: 1 - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - providerSelector: - type: object - required: [] - properties: - application: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - implementation: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - instance_id: - type: string - minLength: 1 - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - minProperties: 1 - expression: - type: object - required: - - $expr - properties: - $expr: - type: string - minLength: 1 - additionalProperties: false - $id: https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.action-attempt/1.0.0.schema.json -implements: - - contract: mdbase.runtime.action-attempt - version: 1.0.0 - fields: - type: type - id: id - run_id: run_id - step_id: step_id - request_id: request_id - invocation_id: invocation_id - attempt_id: attempt_id - contract: contract - provider: provider - provider_declaration_digest: provider_declaration_digest - handler_id: handler_id - idempotency_key: idempotency_key - status: status - request: request - invocation: invocation - outcome: outcome - created_at: created_at - updated_at: updated_at - completed_at: completed_at ---- - -# Durable action attempt - -This canonical type makes `runtime_action_attempt` records discoverable through -the ordinary mdbase record-contract registry. diff --git a/public/contracts/artifacts/types/mdbase-runtime/capability-grant.md b/public/contracts/artifacts/types/mdbase-runtime/capability-grant.md deleted file mode 100644 index 687225d..0000000 --- a/public/contracts/artifacts/types/mdbase-runtime/capability-grant.md +++ /dev/null @@ -1,173 +0,0 @@ ---- -kind: mdbase.type -name: runtime_capability_grant -version: 1 -description: Canonical Markdown implementation of mdbase.runtime.capability-grant. -match: - where: - type: runtime_capability_grant -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - title: mdbase runtime capability grant - type: object - required: - - type - - id - - capability - - principal - - mode - - granted_at - properties: - type: - const: runtime_capability_grant - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - capability: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - principal: - $ref: "#/$defs/identity" - mode: - enum: - - allow - - deny - actions: - type: array - uniqueItems: true - items: - $ref: "#/$defs/contractRequirement" - providers: - type: array - uniqueItems: true - items: - $ref: "#/$defs/providerSelector" - granted_at: - type: string - format: date-time - expires_at: - type: string - format: date-time - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - $defs: - identifier: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - semanticVersion: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - dateTime: - type: string - format: date-time - contractRequirement: - type: object - required: - - id - - version - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - minLength: 1 - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - exactContractReference: - type: object - required: - - id - - version - - digest - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - identity: - type: object - required: - - application - - implementation - - version - properties: - application: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - implementation: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - instance_id: - type: string - minLength: 1 - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - providerSelector: - type: object - required: [] - properties: - application: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - implementation: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - instance_id: - type: string - minLength: 1 - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - minProperties: 1 - expression: - type: object - required: - - $expr - properties: - $expr: - type: string - minLength: 1 - additionalProperties: false - $id: https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.capability-grant/1.0.0.schema.json -implements: - - contract: mdbase.runtime.capability-grant - version: 1.0.0 - fields: - type: type - id: id - capability: capability - principal: principal - mode: mode - actions: actions - providers: providers - granted_at: granted_at - expires_at: expires_at ---- - -# Capability grant evidence - -This canonical type makes `runtime_capability_grant` records discoverable through -the ordinary mdbase record-contract registry. diff --git a/public/contracts/artifacts/types/mdbase-runtime/checkpoint.md b/public/contracts/artifacts/types/mdbase-runtime/checkpoint.md deleted file mode 100644 index fad5438..0000000 --- a/public/contracts/artifacts/types/mdbase-runtime/checkpoint.md +++ /dev/null @@ -1,166 +0,0 @@ ---- -kind: mdbase.type -name: runtime_checkpoint -version: 1 -description: Canonical Markdown implementation of mdbase.runtime.checkpoint. -match: - where: - type: runtime_checkpoint -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - title: mdbase durable runtime checkpoint - type: object - required: - - type - - id - - run_id - - generation - - status - - state - - updated_at - properties: - type: - const: runtime_checkpoint - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - run_id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - generation: - type: integer - minimum: 1 - status: - enum: - - open - - waiting - - ready - - completed - - failed - - cancelled - state: - type: object - updated_at: - type: string - format: date-time - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - $defs: - identifier: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - semanticVersion: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - dateTime: - type: string - format: date-time - contractRequirement: - type: object - required: - - id - - version - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - minLength: 1 - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - exactContractReference: - type: object - required: - - id - - version - - digest - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - identity: - type: object - required: - - application - - implementation - - version - properties: - application: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - implementation: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - instance_id: - type: string - minLength: 1 - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - providerSelector: - type: object - required: [] - properties: - application: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - implementation: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - instance_id: - type: string - minLength: 1 - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - minProperties: 1 - expression: - type: object - required: - - $expr - properties: - $expr: - type: string - minLength: 1 - additionalProperties: false - $id: https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.checkpoint/1.0.0.schema.json -implements: - - contract: mdbase.runtime.checkpoint - version: 1.0.0 - fields: - type: type - id: id - run_id: run_id - generation: generation - status: status - state: state - updated_at: updated_at ---- - -# Runtime checkpoint - -This canonical type makes `runtime_checkpoint` records discoverable through -the ordinary mdbase record-contract registry. diff --git a/public/contracts/artifacts/types/mdbase-runtime/dead-letter.md b/public/contracts/artifacts/types/mdbase-runtime/dead-letter.md deleted file mode 100644 index 1db79a3..0000000 --- a/public/contracts/artifacts/types/mdbase-runtime/dead-letter.md +++ /dev/null @@ -1,168 +0,0 @@ ---- -kind: mdbase.type -name: runtime_dead_letter -version: 1 -description: Canonical Markdown implementation of mdbase.runtime.dead-letter. -match: - where: - type: runtime_dead_letter -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - title: mdbase durable runtime dead letter - type: object - required: - - type - - id - - reason - - status - - evidence - - created_at - properties: - type: - const: runtime_dead_letter - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - reason: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - status: - enum: - - unresolved - - acknowledged - - requeued - evidence_kind: - enum: - - event - - action_request - - action_outcome - evidence: - type: object - created_at: - type: string - format: date-time - acknowledged_at: - type: string - format: date-time - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - $defs: - identifier: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - semanticVersion: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - dateTime: - type: string - format: date-time - contractRequirement: - type: object - required: - - id - - version - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - minLength: 1 - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - exactContractReference: - type: object - required: - - id - - version - - digest - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - identity: - type: object - required: - - application - - implementation - - version - properties: - application: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - implementation: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - instance_id: - type: string - minLength: 1 - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - providerSelector: - type: object - required: [] - properties: - application: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - implementation: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - instance_id: - type: string - minLength: 1 - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - minProperties: 1 - expression: - type: object - required: - - $expr - properties: - $expr: - type: string - minLength: 1 - additionalProperties: false - $id: https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.dead-letter/1.0.0.schema.json -implements: - - contract: mdbase.runtime.dead-letter - version: 1.0.0 - fields: - type: type - id: id - reason: reason - status: status - evidence_kind: evidence_kind - evidence: evidence - created_at: created_at - acknowledged_at: acknowledged_at ---- - -# Runtime dead letter - -This canonical type makes `runtime_dead_letter` records discoverable through -the ordinary mdbase record-contract registry. diff --git a/public/contracts/artifacts/types/mdbase-runtime/diagnostic.md b/public/contracts/artifacts/types/mdbase-runtime/diagnostic.md deleted file mode 100644 index 961b0be..0000000 --- a/public/contracts/artifacts/types/mdbase-runtime/diagnostic.md +++ /dev/null @@ -1,172 +0,0 @@ ---- -kind: mdbase.type -name: runtime_diagnostic -version: 1 -description: Canonical Markdown implementation of mdbase.runtime.diagnostic. -match: - where: - type: runtime_diagnostic -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - title: mdbase durable runtime diagnostic - type: object - required: - - type - - id - - severity - - code - - message - - created_at - properties: - type: - const: runtime_diagnostic - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - severity: - enum: - - info - - warning - - error - code: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - message: - type: string - minLength: 1 - run_id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - attempt_id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - path: - type: string - details: {} - created_at: - type: string - format: date-time - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - $defs: - identifier: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - semanticVersion: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - dateTime: - type: string - format: date-time - contractRequirement: - type: object - required: - - id - - version - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - minLength: 1 - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - exactContractReference: - type: object - required: - - id - - version - - digest - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - identity: - type: object - required: - - application - - implementation - - version - properties: - application: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - implementation: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - instance_id: - type: string - minLength: 1 - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - providerSelector: - type: object - required: [] - properties: - application: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - implementation: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - instance_id: - type: string - minLength: 1 - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - minProperties: 1 - expression: - type: object - required: - - $expr - properties: - $expr: - type: string - minLength: 1 - additionalProperties: false - $id: https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.diagnostic/1.0.0.schema.json -implements: - - contract: mdbase.runtime.diagnostic - version: 1.0.0 - fields: - type: type - id: id - severity: severity - code: code - message: message - run_id: run_id - attempt_id: attempt_id - path: path - details: details - created_at: created_at ---- - -# Runtime diagnostic - -This canonical type makes `runtime_diagnostic` records discoverable through -the ordinary mdbase record-contract registry. diff --git a/public/contracts/artifacts/types/mdbase-runtime/policy.md b/public/contracts/artifacts/types/mdbase-runtime/policy.md deleted file mode 100644 index 636cc65..0000000 --- a/public/contracts/artifacts/types/mdbase-runtime/policy.md +++ /dev/null @@ -1,218 +0,0 @@ ---- -kind: mdbase.type -name: runtime_policy -version: 1 -description: Canonical Markdown implementation of mdbase.runtime.policy. -match: - where: - type: runtime_policy -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - title: mdbase durable runtime policy - type: object - required: - - type - - id - - version - - enabled - - grants - properties: - type: - const: runtime_policy - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - name: - type: string - minLength: 1 - enabled: - type: boolean - executors: - type: object - required: [] - properties: - default: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - workflows: - type: object - additionalProperties: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - provider_selections: - type: array - items: - type: object - required: - - contract - - selector - properties: - contract: - $ref: "#/$defs/contractRequirement" - selector: - $ref: "#/$defs/providerSelector" - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - grants: - type: array - items: - type: object - required: - - capability - - mode - properties: - capability: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - mode: - enum: - - allow - - deny - actions: - type: array - uniqueItems: true - items: - $ref: "#/$defs/contractRequirement" - providers: - type: array - uniqueItems: true - items: - $ref: "#/$defs/providerSelector" - max_calls_per_run: - type: integer - minimum: 1 - max_records_per_run: - type: integer - minimum: 1 - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - $defs: - identifier: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - semanticVersion: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - dateTime: - type: string - format: date-time - contractRequirement: - type: object - required: - - id - - version - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - minLength: 1 - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - exactContractReference: - type: object - required: - - id - - version - - digest - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - identity: - type: object - required: - - application - - implementation - - version - properties: - application: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - implementation: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - instance_id: - type: string - minLength: 1 - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - providerSelector: - type: object - required: [] - properties: - application: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - implementation: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - instance_id: - type: string - minLength: 1 - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - minProperties: 1 - expression: - type: object - required: - - $expr - properties: - $expr: - type: string - minLength: 1 - additionalProperties: false - $id: https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.policy/1.0.0.schema.json -implements: - - contract: mdbase.runtime.policy - version: 1.0.0 - fields: - type: type - id: id - version: version - name: name - enabled: enabled - executors: executors - provider_selections: provider_selections - grants: grants ---- - -# Runtime policy - -This canonical type makes `runtime_policy` records discoverable through -the ordinary mdbase record-contract registry. diff --git a/public/contracts/artifacts/types/mdbase-runtime/provider-registration.md b/public/contracts/artifacts/types/mdbase-runtime/provider-registration.md deleted file mode 100644 index d78cd28..0000000 --- a/public/contracts/artifacts/types/mdbase-runtime/provider-registration.md +++ /dev/null @@ -1,156 +0,0 @@ ---- -kind: mdbase.type -name: runtime_provider_registration -version: 1 -description: Canonical Markdown implementation of mdbase.runtime.provider-registration. -match: - where: - type: runtime_provider_registration -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - title: mdbase runtime provider registration evidence - type: object - required: - - type - - id - - declaration_kind - - declaration - - verified_at - - active - properties: - type: - const: runtime_provider_registration - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - declaration_kind: - enum: - - event_source - - action_provider - declaration: - type: object - verified_at: - type: string - format: date-time - active: - type: boolean - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - $defs: - identifier: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - semanticVersion: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - dateTime: - type: string - format: date-time - contractRequirement: - type: object - required: - - id - - version - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - minLength: 1 - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - exactContractReference: - type: object - required: - - id - - version - - digest - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - identity: - type: object - required: - - application - - implementation - - version - properties: - application: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - implementation: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - instance_id: - type: string - minLength: 1 - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - providerSelector: - type: object - required: [] - properties: - application: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - implementation: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - instance_id: - type: string - minLength: 1 - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - minProperties: 1 - expression: - type: object - required: - - $expr - properties: - $expr: - type: string - minLength: 1 - additionalProperties: false - $id: https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.provider-registration/1.0.0.schema.json -implements: - - contract: mdbase.runtime.provider-registration - version: 1.0.0 - fields: - type: type - id: id - declaration_kind: declaration_kind - declaration: declaration - verified_at: verified_at - active: active ---- - -# Provider registration evidence - -This canonical type makes `runtime_provider_registration` records discoverable through -the ordinary mdbase record-contract registry. diff --git a/public/contracts/artifacts/types/mdbase-runtime/run.md b/public/contracts/artifacts/types/mdbase-runtime/run.md deleted file mode 100644 index 3c98755..0000000 --- a/public/contracts/artifacts/types/mdbase-runtime/run.md +++ /dev/null @@ -1,304 +0,0 @@ ---- -kind: mdbase.type -name: runtime_run -version: 1 -description: Canonical Markdown implementation of mdbase.runtime.run. -match: - where: - type: runtime_run -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - title: mdbase durable runtime run - type: object - required: - - type - - id - - workflow_id - - workflow_version - - workflow_revision - - event_id - - event_contract - - admitted_plan - - status - - created_at - - updated_at - properties: - type: - const: runtime_run - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - workflow_id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - workflow_version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - workflow_revision: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - event_id: - type: string - minLength: 1 - event_contract: - $ref: "#/$defs/exactContractReference" - event_source: - $ref: "#/$defs/identity" - admitted_plan: - $ref: "#/$defs/admittedPlan" - policy_id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - policy_revision: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - trigger_id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - event_cursor: - type: integer - minimum: 1 - executor: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - idempotency_key: - type: string - concurrency_group: - type: string - status: - enum: - - queued - - running - - waiting - - succeeded - - failed - - cancelled - - indeterminate - created_at: - type: string - format: date-time - updated_at: - type: string - format: date-time - started_at: - type: string - format: date-time - finished_at: - type: string - format: date-time - lease: - $ref: "#/$defs/lease" - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - $defs: - identifier: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - semanticVersion: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - dateTime: - type: string - format: date-time - contractRequirement: - type: object - required: - - id - - version - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - minLength: 1 - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - exactContractReference: - type: object - required: - - id - - version - - digest - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - identity: - type: object - required: - - application - - implementation - - version - properties: - application: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - implementation: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - instance_id: - type: string - minLength: 1 - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - providerSelector: - type: object - required: [] - properties: - application: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - implementation: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - instance_id: - type: string - minLength: 1 - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - minProperties: 1 - expression: - type: object - required: - - $expr - properties: - $expr: - type: string - minLength: 1 - additionalProperties: false - admittedPlan: - type: object - required: - - profile_version - - workflow_revision - - event - - steps - properties: - profile_version: - const: "0.2" - workflow_revision: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - event: - type: object - required: - - contract - - source - properties: - contract: - $ref: "#/$defs/exactContractReference" - source: - $ref: "#/$defs/identity" - source_declaration_digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - steps: - type: array - items: - type: object - required: - - id - - contract - - provider - - provider_declaration_digest - - handler_id - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - contract: - $ref: "#/$defs/exactContractReference" - provider: - $ref: "#/$defs/identity" - provider_declaration_digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - handler_id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - lease: - type: object - required: - - owner - - token - - expires_at - properties: - owner: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - token: - type: string - minLength: 1 - expires_at: - type: string - format: date-time - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - $id: https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.run/1.0.0.schema.json -implements: - - contract: mdbase.runtime.run - version: 1.0.0 - fields: - type: type - id: id - workflow_id: workflow_id - workflow_version: workflow_version - workflow_revision: workflow_revision - event_id: event_id - event_contract: event_contract - event_source: event_source - admitted_plan: admitted_plan - policy_id: policy_id - policy_revision: policy_revision - trigger_id: trigger_id - event_cursor: event_cursor - executor: executor - idempotency_key: idempotency_key - concurrency_group: concurrency_group - status: status - created_at: created_at - updated_at: updated_at - started_at: started_at - finished_at: finished_at - lease: lease ---- - -# Durable run - -This canonical type makes `runtime_run` records discoverable through -the ordinary mdbase record-contract registry. diff --git a/public/contracts/artifacts/types/mdbase-runtime/timer.md b/public/contracts/artifacts/types/mdbase-runtime/timer.md deleted file mode 100644 index 8da12bb..0000000 --- a/public/contracts/artifacts/types/mdbase-runtime/timer.md +++ /dev/null @@ -1,192 +0,0 @@ ---- -kind: mdbase.type -name: runtime_timer -version: 1 -description: Canonical Markdown implementation of mdbase.runtime.timer. -match: - where: - type: runtime_timer -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - title: mdbase durable runtime timer - type: object - required: - - type - - id - - generation - - status - - fire_at - - event - - created_at - - updated_at - properties: - type: - const: runtime_timer - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - generation: - type: integer - minimum: 1 - status: - enum: - - scheduled - - firing - - fired - - cancelled - fire_at: - type: string - format: date-time - event: - type: object - required: - - contract - - data - properties: - contract: - $ref: "#/$defs/contractRequirement" - subject: - type: string - correlation_id: - type: string - causation_id: - type: string - data: {} - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - missed_run_policy: - const: fire_once - created_at: - type: string - format: date-time - updated_at: - type: string - format: date-time - fired_at: - type: string - format: date-time - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - $defs: - identifier: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - semanticVersion: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - dateTime: - type: string - format: date-time - contractRequirement: - type: object - required: - - id - - version - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - minLength: 1 - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - exactContractReference: - type: object - required: - - id - - version - - digest - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - identity: - type: object - required: - - application - - implementation - - version - properties: - application: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - implementation: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - instance_id: - type: string - minLength: 1 - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - providerSelector: - type: object - required: [] - properties: - application: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - implementation: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - instance_id: - type: string - minLength: 1 - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - minProperties: 1 - expression: - type: object - required: - - $expr - properties: - $expr: - type: string - minLength: 1 - additionalProperties: false - $id: https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.timer/1.0.0.schema.json -implements: - - contract: mdbase.runtime.timer - version: 1.0.0 - fields: - type: type - id: id - generation: generation - status: status - fire_at: fire_at - event: event - missed_run_policy: missed_run_policy - created_at: created_at - updated_at: updated_at - fired_at: fired_at ---- - -# Runtime timer - -This canonical type makes `runtime_timer` records discoverable through -the ordinary mdbase record-contract registry. diff --git a/public/contracts/artifacts/types/mdbase-runtime/workflow.md b/public/contracts/artifacts/types/mdbase-runtime/workflow.md deleted file mode 100644 index 16787d0..0000000 --- a/public/contracts/artifacts/types/mdbase-runtime/workflow.md +++ /dev/null @@ -1,312 +0,0 @@ ---- -kind: mdbase.type -name: runtime_workflow -version: 1 -description: Canonical Markdown implementation of mdbase.runtime.workflow. -match: - where: - type: runtime_workflow -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - title: mdbase durable runtime workflow - type: object - required: - - type - - id - - version - - name - - enabled - - triggers - - steps - properties: - type: - const: runtime_workflow - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - name: - type: string - minLength: 1 - description: - type: string - enabled: - type: boolean - requires: - $ref: "#/$defs/requires" - vars: - type: object - additionalProperties: {} - triggers: - type: array - minItems: 1 - items: - $ref: "#/$defs/trigger" - steps: - type: array - minItems: 1 - items: - $ref: "#/$defs/step" - run: - $ref: "#/$defs/runPolicy" - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - $defs: - identifier: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - semanticVersion: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - dateTime: - type: string - format: date-time - contractRequirement: - type: object - required: - - id - - version - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - minLength: 1 - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - exactContractReference: - type: object - required: - - id - - version - - digest - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - digest: - type: string - pattern: ^sha256:[0-9a-f]{64}$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - identity: - type: object - required: - - application - - implementation - - version - properties: - application: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - implementation: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - version: - type: string - pattern: ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ - instance_id: - type: string - minLength: 1 - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - providerSelector: - type: object - required: [] - properties: - application: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - implementation: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - instance_id: - type: string - minLength: 1 - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - minProperties: 1 - expression: - type: object - required: - - $expr - properties: - $expr: - type: string - minLength: 1 - additionalProperties: false - requires: - type: object - required: [] - properties: - capabilities: - type: array - uniqueItems: true - items: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - trigger: - type: object - required: - - id - - event - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - event: - $ref: "#/$defs/contractRequirement" - if: - type: object - required: - - $expr - properties: - $expr: - type: string - minLength: 1 - additionalProperties: false - debounce: - $ref: "#/$defs/duration" - minimum_interval: - $ref: "#/$defs/duration" - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - step: - type: object - required: - - id - - action - properties: - id: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - name: - type: string - action: - $ref: "#/$defs/contractRequirement" - provider: - $ref: "#/$defs/providerSelector" - requires: - $ref: "#/$defs/requires" - if: - type: object - required: - - $expr - properties: - $expr: - type: string - minLength: 1 - additionalProperties: false - input: - type: object - additionalProperties: {} - for_each: - type: object - required: - - items - properties: - items: {} - as: - type: string - pattern: ^[A-Za-z_][A-Za-z0-9_]*$ - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - duration: - type: string - pattern: ^(0|[1-9][0-9]*)(ms|s|m|h|d)$ - runPolicy: - type: object - required: [] - properties: - idempotency: - type: object - required: - - key - properties: - key: {} - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - concurrency: - type: object - required: - - policy - properties: - group: {} - policy: - enum: - - skip - - queue - - replace - - allow - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - limits: - type: object - required: [] - properties: - timeout: - $ref: "#/$defs/duration" - max_items: - type: integer - minimum: 1 - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - on_error: - enum: - - stop - - continue - patternProperties: - ^x-[A-Za-z0-9._:-]+$: true - additionalProperties: false - $id: https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.workflow/1.0.0.schema.json -implements: - - contract: mdbase.runtime.workflow - version: 1.0.0 - fields: - type: type - id: id - version: version - name: name - description: description - enabled: enabled - requires: requires - vars: vars - triggers: triggers - steps: steps - run: run ---- - -# Durable workflow - -This canonical type makes `runtime_workflow` records discoverable through -the ordinary mdbase record-contract registry. diff --git a/public/contracts/artifacts/types/obsidian-base/1.md b/public/contracts/artifacts/types/obsidian-base/1.md deleted file mode 100644 index 5f11af6..0000000 --- a/public/contracts/artifacts/types/obsidian-base/1.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -kind: mdbase.type -name: obsidian_base -version: 1 -description: Obsidian Bases saved views stored as records -match: - path_glob: '**/*.base' -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - title: Obsidian Base - description: An Obsidian Bases file. Obsidian owns the format; unknown keys are kept. - type: object - required: - - views - properties: - filters: {} - formulas: - type: object - properties: - type: object - views: - type: array - minItems: 1 - items: - type: object - required: - - type - properties: - type: - type: string - name: - type: string -implements: - - contract: obsidian.base - version: 1.0.0 - fields: - filters: filters - formulas: formulas - properties: properties - views: views ---- - -# Obsidian Base - -Makes `.base` files discoverable as saved views through the `obsidian.base` -contract. It takes effect when the collection lists `base` in -`settings.record_extensions`; narrow the `path_glob` to the folders that hold -your Bases. Edit Bases with whole-document replacement so Obsidian's comments -and layout survive. diff --git a/public/contracts/artifacts/types/person/1.md b/public/contracts/artifacts/types/person/1.md deleted file mode 100644 index 1ef6e5d..0000000 --- a/public/contracts/artifacts/types/person/1.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -kind: mdbase.type -name: person -version: 1 -description: A portable person with optional account identities and contact information -match: - where: - type: person -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - title: Person - type: object - required: [type, id, name] - properties: - type: - const: person - id: - type: string - pattern: '\S' - description: Stable person ID; keep this when moving or renaming the note. - name: - type: string - minLength: 1 - pattern: '\S' - identities: - type: array - uniqueItems: true - items: - type: object - required: [issuer, subject] - properties: - issuer: - type: string - format: uri - pattern: '^https?://' - subject: - type: string - pattern: '\S' - additionalProperties: false - kind: - const: individual - default: individual - email: - type: string - format: email - phone: - type: string - minLength: 1 - organisation: - type: string - minLength: 1 - birthday: - type: string - format: date - additionalProperties: true -collection: - display: - name_field: name - description_field: organisation - icon: user - unique: - - field: id - scope: collection -implements: - - contract: mdbase.person - version: 1.0.0 - fields: - id: id - name: name - identities: identities - - contract: mdbase.contact - version: 1.0.0 - fields: - name: name - kind: kind - primary_email: email - primary_phone: phone - organisation: organisation - birthday: birthday ---- - -# Person - -Create a stable ID when adding a person, for example `person_` followed by a -random UUID. Keep it when copying the note to another collection or renaming -its file. Apps use this ID for assignments and other person references. - -```yaml -type: person -id: person_2c1343ec-cac1-4d58-98c9-41736f4de7db -name: Callum -identities: - - issuer: https://connect.example - subject: usr_789 -``` - -Use the actual issuer and subject supplied by Connect, not the example values. -Omit `identities` for people without accounts. Email is contact information, -not a way to establish an identity association. Linking a person does not -invite them or grant access to this collection. - -Identity associations and contact labels are ordinary editable data. They are -not proof of authentication. Avoid duplicate person IDs or identity pairs -across person notes; applications must report ambiguity rather than guess. - -The inline schema belongs to the collection. Add local fields or rename them -and update the explicit contract mappings without editing published contracts. diff --git a/public/contracts/artifacts/types/person/2.md b/public/contracts/artifacts/types/person/2.md deleted file mode 100644 index 095224e..0000000 --- a/public/contracts/artifacts/types/person/2.md +++ /dev/null @@ -1,148 +0,0 @@ ---- -kind: mdbase.type -name: person -version: 2 -description: An individual that other notes link to, with a collection-owned display name and optional contact details and account associations. -match: - where: - type: person -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - title: Person - description: One person represented by an ordinary note. Contact details and account associations are optional; this record never grants access or membership. - type: object - required: [type, name] - properties: - type: - const: person - description: Identifies this note as a Person. Usually set by the application; changing it changes which type validates the note. - name: - type: string - minLength: 1 - pattern: '\S' - description: The display name to use in this collection. Use a full name, preferred name, or single name as appropriate; no first/last-name split is required. It can differ from an account's name and is not automatically synchronised with it. - identities: - type: array - description: Optional accounts associated with this person, each identified by an exact issuer and subject pair. Omit this field for someone without an account. These editable associations help applications find your person record; they are not proof of identity and never grant access. Avoid linking the same account to multiple person notes. - uniqueItems: true - items: - type: object - description: One account association supplied by its identity service. Both issuer and subject must match exactly; never infer them from a name or email. - required: [issuer, subject] - properties: - issuer: - type: string - format: uri - pattern: '^https?://' - description: The exact identity-service issuer URL reported for this account. Preserve its scheme, case, path, and trailing slash; do not guess it from the collection's hosting address. - subject: - type: string - pattern: '\S' - description: The opaque account identifier reported by that issuer, not a display name, email, password, or access token. Copy it exactly; a different issuer may use the same subject for a different account. - additionalProperties: false - kind: - const: individual - default: individual - description: This Person starter represents an individual. The organisation field describes their affiliation, not a different record kind. Existing organisation or group contacts can keep their own Contact-compatible type. - email: - type: string - format: email - description: The preferred email address for contacting this person. Optional contact information only; it does not establish an account association or grant access. - phone: - type: string - minLength: 1 - description: The preferred telephone number, stored as text so country codes, formatting, and extensions can be preserved. Include a country code when useful; omit if unknown. - organisation: - type: string - minLength: 1 - description: The person's main affiliation, such as an employer, school, or community. A collection-owned display label, not a membership or access-control setting; omit if not relevant. - birthday: - type: string - format: date - description: A known birthday as a full calendar date in YYYY-MM-DD form. Omit if unknown or if only the month and day are known; do not invent a year. Consider whether this collection needs this personal information. - additionalProperties: true -collection: - display: - name_field: name - description_field: organisation - icon: user -implements: - - contract: mdbase.person - version: 2.0.0 - fields: - name: name - identities: identities - - contract: mdbase.contact - version: 1.0.0 - fields: - name: name - kind: kind - primary_email: email - primary_phone: phone - organisation: organisation - birthday: birthday ---- - -# Person - -Use one note per individual, whether or not they have a Connect account. This -single type supplies both a Person record and optional Contact details. You do -not need a second Contact note for the same person. - -## Start with a name - -```yaml -type: person -name: Alex Rivera -``` - -Other notes refer to this person with an ordinary link to this note, such as -`[[Alex Rivera]]` in a task's `assignees`. Links to this note appear in its -backlinks. Rename or move the note with a tool that updates references, as mdbase -and Obsidian do, so those links stay current. Reusing a person's file name for -somebody else redirects existing links to the wrong person. - -The name is your collection's display label. Full names, preferred names and -single names are equally valid. There is no required first-name/last-name split. - -## Add only the contact details you need - -Email, phone, organisation and birthday are optional. Omit unknown values rather -than filling them with empty strings or guesses. Store phone numbers as text, -including an international prefix or extension when helpful. Birthday currently -requires a complete date; partial dates need a separately configured local field. -Keep free-form context in the Markdown body and be deliberate about sensitive -personal information in shared collections. - -This starter describes individuals. Existing organisation and group records can -continue using their Contact-compatible type; setting someone's affiliation does -not turn their Person note into an organisation record. - -## Link accounts deliberately - -The editor's **Link this record to me** action uses the authenticated account's -actual issuer and subject. If configuring these manually, copy both exact values -from the identity service. Do not guess them from an email, display name, or the -server hosting this collection. Multiple entries may represent the same person -at different identity services. Omit `identities` when there is no account to link. - -Associations are ordinary editable data, not authentication or proof of identity. -Linking never invites someone, grants access, or changes collection membership. -Never put credentials in a person record. Avoid linking the same account from -several notes: applications should report ambiguity, not guess which -record to use. Account deletion or recreation is not permission to reassign an -old association automatically. - -## Keep the collection's own shape - -The inline schema belongs to this collection. You may add local fields, or rename -fields and update their explicit `implements` mappings. Apps use those mappings -for the Person and Contact contracts; they need not assume your local field names. -Additional fields remain part of the note but do not automatically become shared -contract fields. Do not edit published contracts to customise this type. - -Installing a newer starter does not overwrite an existing customised type or -migrate your address book. Converting an existing individual Contact to Person -should be a reviewed edit of that one note, preserving its path, fields and body. diff --git a/public/contracts/artifacts/types/person/3.md b/public/contracts/artifacts/types/person/3.md deleted file mode 100644 index 575a51d..0000000 --- a/public/contracts/artifacts/types/person/3.md +++ /dev/null @@ -1,145 +0,0 @@ ---- -kind: mdbase.type -name: person -version: 3 -description: An individual that other notes link to, with a collection-owned display name and optional contact details and account associations. -match: - where: - type: person -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - title: Person - description: One person represented by an ordinary note. Contact details and account associations are optional; this record never grants access or membership. - type: object - required: [name] - properties: - name: - type: string - minLength: 1 - pattern: '\S' - description: The display name to use in this collection. Use a full name, preferred name, or single name as appropriate; no first/last-name split is required. It can differ from an account's name and is not automatically synchronised with it. - identities: - type: array - description: Optional accounts associated with this person, each identified by an exact issuer and subject pair. Omit this field for someone without an account. These editable associations help applications find your person record; they are not proof of identity and never grant access. Avoid linking the same account to multiple person notes. - uniqueItems: true - items: - type: object - description: One account association supplied by its identity service. Both issuer and subject must match exactly; never infer them from a name or email. - required: [issuer, subject] - properties: - issuer: - type: string - format: uri - pattern: '^https?://' - description: The exact identity-service issuer URL reported for this account. Preserve its scheme, case, path, and trailing slash; do not guess it from the collection's hosting address. - subject: - type: string - pattern: '\S' - description: The opaque account identifier reported by that issuer, not a display name, email, password, or access token. Copy it exactly; a different issuer may use the same subject for a different account. - additionalProperties: false - kind: - const: individual - default: individual - description: This Person starter represents an individual. The organisation field describes their affiliation, not a different record kind. Existing organisation or group contacts can keep their own Contact-compatible type. - email: - type: string - format: email - description: The preferred email address for contacting this person. Optional contact information only; it does not establish an account association or grant access. - phone: - type: string - minLength: 1 - description: The preferred telephone number, stored as text so country codes, formatting, and extensions can be preserved. Include a country code when useful; omit if unknown. - organisation: - type: string - minLength: 1 - description: The person's main affiliation, such as an employer, school, or community. A collection-owned display label, not a membership or access-control setting; omit if not relevant. - birthday: - type: string - format: date - description: A known birthday as a full calendar date in YYYY-MM-DD form. Omit if unknown or if only the month and day are known; do not invent a year. Consider whether this collection needs this personal information. - additionalProperties: true -collection: - display: - name_field: name - description_field: organisation - icon: user -implements: - - contract: mdbase.person - version: 2.0.0 - fields: - name: name - identities: identities - - contract: mdbase.contact - version: 1.0.0 - fields: - name: name - kind: kind - primary_email: email - primary_phone: phone - organisation: organisation - birthday: birthday ---- - -# Person - -Use one note per individual, whether or not they have a Connect account. This -single type supplies both a Person record and optional Contact details. You do -not need a second Contact note for the same person. - -## Start with a name - -```yaml -type: person -name: Alex Rivera -``` - -Other notes refer to this person with an ordinary link to this note, such as -`[[Alex Rivera]]` in a task's `assignees`. Links to this note appear in its -backlinks. Rename or move the note with a tool that updates references, as mdbase -and Obsidian do, so those links stay current. Reusing a person's file name for -somebody else redirects existing links to the wrong person. - -The name is your collection's display label. Full names, preferred names and -single names are equally valid. There is no required first-name/last-name split. - -## Add only the contact details you need - -Email, phone, organisation and birthday are optional. Omit unknown values rather -than filling them with empty strings or guesses. Store phone numbers as text, -including an international prefix or extension when helpful. Birthday currently -requires a complete date; partial dates need a separately configured local field. -Keep free-form context in the Markdown body and be deliberate about sensitive -personal information in shared collections. - -This starter describes individuals. Existing organisation and group records can -continue using their Contact-compatible type; setting someone's affiliation does -not turn their Person note into an organisation record. - -## Link accounts deliberately - -The editor's **Link this record to me** action uses the authenticated account's -actual issuer and subject. If configuring these manually, copy both exact values -from the identity service. Do not guess them from an email, display name, or the -server hosting this collection. Multiple entries may represent the same person -at different identity services. Omit `identities` when there is no account to link. - -Associations are ordinary editable data, not authentication or proof of identity. -Linking never invites someone, grants access, or changes collection membership. -Never put credentials in a person record. Avoid linking the same account from -several notes: applications should report ambiguity, not guess which -record to use. Account deletion or recreation is not permission to reassign an -old association automatically. - -## Keep the collection's own shape - -The inline schema belongs to this collection. You may add local fields, or rename -fields and update their explicit `implements` mappings. Apps use those mappings -for the Person and Contact contracts; they need not assume your local field names. -Additional fields remain part of the note but do not automatically become shared -contract fields. Do not edit published contracts to customise this type. - -Installing a newer starter does not overwrite an existing customised type or -migrate your address book. Converting an existing individual Contact to Person -should be a reviewed edit of that one note, preserving its path, fields and body. diff --git a/public/contracts/artifacts/types/tasknotes-task/1.md b/public/contracts/artifacts/types/tasknotes-task/1.md deleted file mode 100644 index cd34aa8..0000000 --- a/public/contracts/artifacts/types/tasknotes-task/1.md +++ /dev/null @@ -1,457 +0,0 @@ ---- -kind: mdbase.type -name: task -version: 1 -description: A task managed by TaskNotes. -match: - where: - tags: - contains: task -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - type: object - additionalProperties: true - properties: - id: - type: string - minLength: 1 - title: - type: string - minLength: 1 - status: - enum: &a2 - - none - - open - - in-progress - - done - - cancelled - default: open - priority: - enum: &a4 - - none - - low - - normal - - high - default: normal - due: &a1 - anyOf: - - type: string - format: date - - type: string - format: date-time - scheduled: *a1 - contexts: - type: array - items: - type: string - projects: - type: array - items: - type: string - attachments: - type: array - items: - type: string - minLength: 1 - uniqueItems: true - timeEstimate: - type: integer - minimum: 0 - completedDate: - type: string - format: date - dateCreated: - type: string - format: date-time - dateModified: - type: string - format: date-time - recurrence: - type: string - recurrence_anchor: - enum: - - scheduled - - completion - default: scheduled - occurrence_materialization: - enum: - - manual - - on_completion - - rolling - default: manual - occurrence_next_trigger: - enum: - - completion - - completion_or_skip - default: completion - occurrence_template: - type: string - occurrence_past_horizon: - type: string - occurrence_future_horizon: - type: string - recurrence_parent: - type: string - occurrence_date: - type: string - format: date - tags: - type: array - items: - type: string - timeEntries: - type: array - items: - type: object - additionalProperties: false - properties: - startTime: - type: string - format: date-time - endTime: - type: string - format: date-time - description: - type: string - duration: - type: integer - reminders: - type: array - items: - oneOf: - - type: object - required: - - id - - type - - absoluteTime - additionalProperties: false - properties: - id: - type: string - type: - const: absolute - description: - type: string - absoluteTime: - type: string - format: date-time - - type: object - required: - - id - - type - - relatedTo - - offset - additionalProperties: false - properties: - id: - type: string - type: - const: relative - description: - type: string - relatedTo: - enum: - - due - - scheduled - offset: - type: string - blockedBy: - type: array - items: - type: object - additionalProperties: false - properties: - uid: - type: string - reltype: - type: string - gap: - type: string - required: - - uid - complete_instances: - type: array - items: - type: string - format: date - skipped_instances: - type: array - items: - type: string - format: date - icsEventId: - type: array - items: - type: string - googleCalendarEventId: - type: string - googleCalendarExceptionEventId: - type: string - googleCalendarExceptionOriginalScheduled: - type: string - format: date - googleCalendarMovedOriginalDates: - type: array - items: - type: string - format: date - tasknotes_manual_order: - type: string - allOf: - - if: - required: - - status - properties: - status: - enum: &a3 - - done - not: - required: - - recurrence - then: - required: - - completedDate - required: - - title - - status - - dateCreated -collection: - read_defaults: - status: open - priority: normal - recurrence_anchor: scheduled - occurrence_materialization: manual - occurrence_next_trigger: completion - links: - projects[]: - target_type: any - validate_exists: false - attachments[]: - validate_exists: false - occurrence_template: - target_type: any - validate_exists: false - recurrence_parent: - target_type: task - validate_exists: false - blockedBy[].uid: - target_type: task - validate_exists: false - path: - runtime: tasknotes - template: "{{zettel}}" - folder: tasks - generated_by: tasknotes.filename.create - display: - name_field: title - unique: - - field: id - scope: type -lifecycle: - on_create: - set: - id: - uuid: true - dateCreated: - now: true - dateModified: - now: true - on_update: - set: - dateModified: - now: true -implements: - - contract: tasknotes.task - version: 0.3.0-rc.3 - fields: - id: id - title: title - status: status - priority: priority - due: due - scheduled: scheduled - contexts: contexts - projects: projects - attachments: attachments - timeEstimate: timeEstimate - completedDate: completedDate - dateCreated: dateCreated - dateModified: dateModified - recurrence: recurrence - recurrenceAnchor: recurrence_anchor - occurrenceMaterialization: occurrence_materialization - occurrenceNextTrigger: occurrence_next_trigger - occurrenceTemplate: occurrence_template - occurrencePastHorizon: occurrence_past_horizon - occurrenceFutureHorizon: occurrence_future_horizon - recurrenceParent: recurrence_parent - occurrenceDate: occurrence_date - tags: tags - timeEntries: timeEntries - reminders: reminders - blockedBy: blockedBy - completeInstances: complete_instances - skippedInstances: skipped_instances - icsEventId: icsEventId - googleCalendarEventId: googleCalendarEventId - googleCalendarExceptionEventId: googleCalendarExceptionEventId - googleCalendarExceptionOriginalScheduled: googleCalendarExceptionOriginalScheduled - googleCalendarMovedOriginalDates: googleCalendarMovedOriginalDates - sortOrder: tasknotes_manual_order - binding: - profiles: - - core-lite - - recurrence - - materialized-occurrences - capabilities: - - dependencies - - reminders - - attachments - - links - - time-tracking - - materialized-occurrences - - archive - - templating - title: - storage: frontmatter - filename_format: zettel - status: - values: *a2 - default: open - completed_values: *a3 - skipped_values: - - cancelled - default_skipped: cancelled - definitions: - - value: none - label: None - color: "#94a3b8" - is_completed: false - is_skipped: false - exclude_from_cycle: false - order: 0 - auto_archive: false - auto_archive_delay_minutes: 5 - - value: open - label: Open - color: "#64748b" - is_completed: false - is_skipped: false - exclude_from_cycle: false - order: 1 - auto_archive: false - auto_archive_delay_minutes: 5 - - value: in-progress - label: In progress - color: "#3b82f6" - is_completed: false - is_skipped: false - exclude_from_cycle: false - order: 2 - auto_archive: false - auto_archive_delay_minutes: 5 - - value: done - label: Done - color: "#22c55e" - is_completed: true - is_skipped: false - exclude_from_cycle: false - order: 3 - auto_archive: false - auto_archive_delay_minutes: 5 - - value: cancelled - label: Cancelled - color: "#94a3b8" - is_completed: false - is_skipped: true - exclude_from_cycle: true - order: 4 - auto_archive: false - auto_archive_delay_minutes: 5 - priority: - values: *a4 - default: normal - definitions: - - value: none - label: None - color: "#94a3b8" - weight: 0 - - value: low - label: Low - color: "#3b82f6" - weight: 1 - - value: normal - label: Normal - color: "#f59e0b" - weight: 2 - - value: high - label: High - color: "#ef4444" - weight: 3 - recurrence: - syntax: tasknotes - maintain_due_date_offset: true - reset_body_checkboxes: false - occurrences: - identity_roles: - - recurrenceParent - - occurrenceDate - default_materialization: manual - default_next_trigger: completion - past_horizon: P0D - future_horizon: P14D - links: - accepted_formats: - - wikilink - - markdown - write_format: wikilink - archive: - archived_tag: archived - move_on_archive: false - time_tracking: - auto_stop_on_complete: false - templating: - enabled: false - occurrence_enabled: false -x-tasknotes-generator: - managed_fields: - - attachments - - blockedBy - - complete_instances - - completedDate - - contexts - - dateCreated - - dateModified - - due - - googleCalendarEventId - - googleCalendarExceptionEventId - - googleCalendarExceptionOriginalScheduled - - googleCalendarMovedOriginalDates - - icsEventId - - id - - occurrence_date - - occurrence_future_horizon - - occurrence_materialization - - occurrence_next_trigger - - occurrence_past_horizon - - occurrence_template - - priority - - projects - - recurrence - - recurrence_anchor - - recurrence_parent - - reminders - - scheduled - - skipped_instances - - status - - tags - - tasknotes_manual_order - - timeEntries - - timeEstimate - - title ---- -# Task - -Task records live under `tasks/`. diff --git a/public/contracts/artifacts/types/tasknotes-task/2.md b/public/contracts/artifacts/types/tasknotes-task/2.md deleted file mode 100644 index 3402453..0000000 --- a/public/contracts/artifacts/types/tasknotes-task/2.md +++ /dev/null @@ -1,468 +0,0 @@ ---- -kind: mdbase.type -name: task -version: 2 -description: A task managed by TaskNotes. -match: - where: - tags: - contains: task -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - type: object - additionalProperties: true - properties: - id: - type: string - minLength: 1 - title: - type: string - minLength: 1 - status: - enum: &a1 - - none - - open - - in-progress - - done - default: open - priority: - enum: &a3 - - none - - low - - normal - - high - default: normal - due: - anyOf: - - type: string - format: date - - type: string - format: date-time - scheduled: - anyOf: - - type: string - format: date - - type: string - format: date-time - contexts: - type: array - items: - type: string - projects: - type: array - items: - type: string - assignees: - type: array - items: - type: string - minLength: 1 - pattern: \S - uniqueItems: true - attachments: - type: array - items: - type: string - minLength: 1 - uniqueItems: true - timeEstimate: - type: integer - minimum: 0 - completedDate: - type: string - format: date - dateCreated: - type: string - format: date-time - dateModified: - type: string - format: date-time - recurrence: - type: string - recurrence_anchor: - enum: - - scheduled - - completion - default: scheduled - occurrence_materialization: - enum: - - manual - - on_completion - - rolling - default: manual - occurrence_next_trigger: - enum: - - completion - - completion_or_skip - default: completion - occurrence_template: - type: string - occurrence_past_horizon: - type: string - occurrence_future_horizon: - type: string - recurrence_parent: - type: string - occurrence_date: - type: string - format: date - tags: - type: array - items: - type: string - timeEntries: - type: array - items: - type: object - additionalProperties: false - properties: - startTime: - type: string - format: date-time - endTime: - type: string - format: date-time - description: - type: string - duration: - type: integer - reminders: - type: array - items: - oneOf: - - type: object - required: - - id - - type - - absoluteTime - additionalProperties: false - properties: - id: - type: string - type: - const: absolute - description: - type: string - absoluteTime: - type: string - format: date-time - - type: object - required: - - id - - type - - relatedTo - - offset - additionalProperties: false - properties: - id: - type: string - type: - const: relative - description: - type: string - relatedTo: - enum: - - due - - scheduled - offset: - type: string - blockedBy: - type: array - items: - type: object - additionalProperties: false - properties: - uid: - type: string - reltype: - type: string - gap: - type: string - required: - - uid - complete_instances: - type: array - items: - type: string - format: date - skipped_instances: - type: array - items: - type: string - format: date - icsEventId: - type: array - items: - type: string - googleCalendarEventId: - type: string - googleCalendarExceptionEventId: - type: string - googleCalendarExceptionOriginalScheduled: - type: string - format: date - googleCalendarMovedOriginalDates: - type: array - items: - type: string - format: date - tasknotes_manual_order: - type: string - allOf: - - if: - required: - - status - properties: - status: - enum: &a2 - - done - not: - required: - - recurrence - then: - required: - - completedDate - required: - - title - - status - - dateCreated -collection: - read_defaults: - status: open - priority: normal - recurrence_anchor: scheduled - occurrence_materialization: manual - occurrence_next_trigger: completion - links: - projects[]: - target_type: any - validate_exists: false - attachments[]: - validate_exists: false - occurrence_template: - target_type: any - validate_exists: false - recurrence_parent: - target_type: task - validate_exists: false - blockedBy[].uid: - target_type: task - validate_exists: false - path: - runtime: tasknotes - template: "{{zettel}}" - folder: tasks - generated_by: tasknotes.filename.create - display: - name_field: title - unique: - - field: id - scope: type -lifecycle: - on_create: - set: - id: - uuid: true - dateCreated: - now: true - dateModified: - now: true - on_update: - set: - dateModified: - now: true -implements: - - contract: tasknotes.task - version: 0.3.0-rc.4 - fields: - id: id - title: title - status: status - priority: priority - due: due - scheduled: scheduled - contexts: contexts - projects: projects - assignees: assignees - attachments: attachments - timeEstimate: timeEstimate - completedDate: completedDate - dateCreated: dateCreated - dateModified: dateModified - recurrence: recurrence - recurrenceAnchor: recurrence_anchor - occurrenceMaterialization: occurrence_materialization - occurrenceNextTrigger: occurrence_next_trigger - occurrenceTemplate: occurrence_template - occurrencePastHorizon: occurrence_past_horizon - occurrenceFutureHorizon: occurrence_future_horizon - recurrenceParent: recurrence_parent - occurrenceDate: occurrence_date - tags: tags - timeEntries: timeEntries - reminders: reminders - blockedBy: blockedBy - completeInstances: complete_instances - skippedInstances: skipped_instances - icsEventId: icsEventId - googleCalendarEventId: googleCalendarEventId - googleCalendarExceptionEventId: googleCalendarExceptionEventId - googleCalendarExceptionOriginalScheduled: googleCalendarExceptionOriginalScheduled - googleCalendarMovedOriginalDates: googleCalendarMovedOriginalDates - sortOrder: tasknotes_manual_order - binding: - profiles: - - core-lite - - recurrence - - templating - - materialized-occurrences - - extended - capabilities: - - dependencies - - reminders - - attachments - - links - - time-tracking - - materialized-occurrences - - archive - - templating - title: - storage: frontmatter - filename_format: zettel - status: - values: *a1 - default: open - completed_values: *a2 - skipped_values: [] - definitions: - - value: none - label: None - color: "#cccccc" - is_completed: false - is_skipped: false - exclude_from_cycle: false - order: 0 - auto_archive: false - auto_archive_delay_minutes: 5 - - value: open - label: Open - color: "#808080" - is_completed: false - is_skipped: false - exclude_from_cycle: false - order: 1 - auto_archive: false - auto_archive_delay_minutes: 5 - - value: in-progress - label: In progress - color: "#0066cc" - is_completed: false - is_skipped: false - exclude_from_cycle: false - order: 2 - auto_archive: false - auto_archive_delay_minutes: 5 - - value: done - label: Done - color: "#00aa00" - is_completed: true - is_skipped: false - exclude_from_cycle: false - order: 3 - auto_archive: false - auto_archive_delay_minutes: 5 - priority: - values: *a3 - default: normal - definitions: - - value: none - label: None - color: "#cccccc" - weight: 0 - - value: low - label: Low - color: "#00aa00" - weight: 1 - - value: normal - label: Normal - color: "#ffaa00" - weight: 2 - - value: high - label: High - color: "#ff0000" - weight: 3 - recurrence: - syntax: tasknotes - maintain_due_date_offset: true - reset_body_checkboxes: false - occurrences: - identity_roles: - - recurrenceParent - - occurrenceDate - default_materialization: manual - default_next_trigger: completion - past_horizon: P0D - future_horizon: P14D - links: - accepted_formats: - - wikilink - - markdown - write_format: wikilink - archive: - archived_tag: archived - move_on_archive: false - time_tracking: - auto_stop_on_complete: false - templating: - enabled: false - occurrence_enabled: false -x-tasknotes-generator: - managed_fields: - - assignees - - attachments - - blockedBy - - complete_instances - - completedDate - - contexts - - dateCreated - - dateModified - - due - - googleCalendarEventId - - googleCalendarExceptionEventId - - googleCalendarExceptionOriginalScheduled - - googleCalendarMovedOriginalDates - - icsEventId - - id - - occurrence_date - - occurrence_future_horizon - - occurrence_materialization - - occurrence_next_trigger - - occurrence_past_horizon - - occurrence_template - - priority - - projects - - recurrence - - recurrence_anchor - - recurrence_parent - - reminders - - scheduled - - skipped_instances - - status - - tags - - tasknotes_manual_order - - timeEntries - - timeEstimate - - title ---- - -# Task - -This type definition implements the TaskNotes contract for this mdbase collection. -Its JSON Schema describes persisted task frontmatter; collection and lifecycle -metadata describe generic mdbase behavior; `implements` maps the portable -TaskNotes task view and supplies TaskNotes behavior. - -Changes made here are loaded by TaskNotes. Portable changes made in TaskNotes -settings are written back while unknown extensions are preserved. diff --git a/public/contracts/artifacts/types/tasknotes-task/3.md b/public/contracts/artifacts/types/tasknotes-task/3.md deleted file mode 100644 index c876083..0000000 --- a/public/contracts/artifacts/types/tasknotes-task/3.md +++ /dev/null @@ -1,470 +0,0 @@ ---- -kind: mdbase.type -name: task -version: 3 -description: A task managed by TaskNotes. -match: - where: - tags: - contains: task -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - type: object - additionalProperties: true - properties: - id: - type: string - minLength: 1 - title: - type: string - minLength: 1 - status: - enum: &a1 - - none - - open - - in-progress - - done - default: open - priority: - enum: &a3 - - none - - low - - normal - - high - default: normal - due: - anyOf: - - type: string - format: date - - type: string - format: date-time - scheduled: - anyOf: - - type: string - format: date - - type: string - format: date-time - contexts: - type: array - items: - type: string - projects: - type: array - items: - type: string - assignees: - type: array - items: - type: string - minLength: 1 - pattern: \S - uniqueItems: true - attachments: - type: array - items: - type: string - minLength: 1 - uniqueItems: true - timeEstimate: - type: integer - minimum: 0 - completedDate: - type: string - format: date - dateCreated: - type: string - format: date-time - dateModified: - type: string - format: date-time - recurrence: - type: string - recurrence_anchor: - enum: - - scheduled - - completion - default: scheduled - occurrence_materialization: - enum: - - manual - - on_completion - - rolling - default: manual - occurrence_next_trigger: - enum: - - completion - - completion_or_skip - default: completion - occurrence_template: - type: string - occurrence_past_horizon: - type: string - occurrence_future_horizon: - type: string - recurrence_parent: - type: string - occurrence_date: - type: string - format: date - tags: - type: array - items: - type: string - timeEntries: - type: array - items: - type: object - additionalProperties: false - properties: - startTime: - type: string - format: date-time - endTime: - type: string - format: date-time - description: - type: string - duration: - type: integer - reminders: - type: array - items: - oneOf: - - type: object - required: - - id - - type - - absoluteTime - additionalProperties: false - properties: - id: - type: string - type: - const: absolute - description: - type: string - absoluteTime: - type: string - format: date-time - - type: object - required: - - id - - type - - relatedTo - - offset - additionalProperties: false - properties: - id: - type: string - type: - const: relative - description: - type: string - relatedTo: - enum: - - due - - scheduled - offset: - type: string - blockedBy: - type: array - items: - type: object - additionalProperties: false - properties: - uid: - type: string - reltype: - type: string - gap: - type: string - required: - - uid - complete_instances: - type: array - items: - type: string - format: date - skipped_instances: - type: array - items: - type: string - format: date - icsEventId: - type: array - items: - type: string - googleCalendarEventId: - type: string - googleCalendarExceptionEventId: - type: string - googleCalendarExceptionOriginalScheduled: - type: string - format: date - googleCalendarMovedOriginalDates: - type: array - items: - type: string - format: date - tasknotes_manual_order: - type: string - allOf: - - if: - required: - - status - properties: - status: - enum: &a2 - - done - not: - required: - - recurrence - then: - required: - - completedDate - required: - - title - - status - - dateCreated -collection: - read_defaults: - status: open - priority: normal - recurrence_anchor: scheduled - occurrence_materialization: manual - occurrence_next_trigger: completion - links: - projects[]: - target_type: any - validate_exists: false - assignees[]: - validate_exists: false - attachments[]: - validate_exists: false - occurrence_template: - target_type: any - validate_exists: false - recurrence_parent: - target_type: task - validate_exists: false - blockedBy[].uid: - target_type: task - validate_exists: false - path: - runtime: tasknotes - template: "{{zettel}}" - folder: tasks - generated_by: tasknotes.filename.create - display: - name_field: title - unique: - - field: id - scope: type -lifecycle: - on_create: - set: - id: - uuid: true - dateCreated: - now: true - dateModified: - now: true - on_update: - set: - dateModified: - now: true -implements: - - contract: tasknotes.task - version: 0.3.0-rc.5 - fields: - id: id - title: title - status: status - priority: priority - due: due - scheduled: scheduled - contexts: contexts - projects: projects - assignees: assignees - attachments: attachments - timeEstimate: timeEstimate - completedDate: completedDate - dateCreated: dateCreated - dateModified: dateModified - recurrence: recurrence - recurrenceAnchor: recurrence_anchor - occurrenceMaterialization: occurrence_materialization - occurrenceNextTrigger: occurrence_next_trigger - occurrenceTemplate: occurrence_template - occurrencePastHorizon: occurrence_past_horizon - occurrenceFutureHorizon: occurrence_future_horizon - recurrenceParent: recurrence_parent - occurrenceDate: occurrence_date - tags: tags - timeEntries: timeEntries - reminders: reminders - blockedBy: blockedBy - completeInstances: complete_instances - skippedInstances: skipped_instances - icsEventId: icsEventId - googleCalendarEventId: googleCalendarEventId - googleCalendarExceptionEventId: googleCalendarExceptionEventId - googleCalendarExceptionOriginalScheduled: googleCalendarExceptionOriginalScheduled - googleCalendarMovedOriginalDates: googleCalendarMovedOriginalDates - sortOrder: tasknotes_manual_order - binding: - profiles: - - core-lite - - recurrence - - templating - - materialized-occurrences - - extended - capabilities: - - dependencies - - reminders - - attachments - - links - - time-tracking - - materialized-occurrences - - archive - - templating - title: - storage: frontmatter - filename_format: zettel - status: - values: *a1 - default: open - completed_values: *a2 - skipped_values: [] - definitions: - - value: none - label: None - color: "#cccccc" - is_completed: false - is_skipped: false - exclude_from_cycle: false - order: 0 - auto_archive: false - auto_archive_delay_minutes: 5 - - value: open - label: Open - color: "#808080" - is_completed: false - is_skipped: false - exclude_from_cycle: false - order: 1 - auto_archive: false - auto_archive_delay_minutes: 5 - - value: in-progress - label: In progress - color: "#0066cc" - is_completed: false - is_skipped: false - exclude_from_cycle: false - order: 2 - auto_archive: false - auto_archive_delay_minutes: 5 - - value: done - label: Done - color: "#00aa00" - is_completed: true - is_skipped: false - exclude_from_cycle: false - order: 3 - auto_archive: false - auto_archive_delay_minutes: 5 - priority: - values: *a3 - default: normal - definitions: - - value: none - label: None - color: "#cccccc" - weight: 0 - - value: low - label: Low - color: "#00aa00" - weight: 1 - - value: normal - label: Normal - color: "#ffaa00" - weight: 2 - - value: high - label: High - color: "#ff0000" - weight: 3 - recurrence: - syntax: tasknotes - maintain_due_date_offset: true - reset_body_checkboxes: false - occurrences: - identity_roles: - - recurrenceParent - - occurrenceDate - default_materialization: manual - default_next_trigger: completion - past_horizon: P0D - future_horizon: P14D - links: - accepted_formats: - - wikilink - - markdown - write_format: wikilink - archive: - archived_tag: archived - move_on_archive: false - time_tracking: - auto_stop_on_complete: false - templating: - enabled: false - occurrence_enabled: false -x-tasknotes-generator: - managed_fields: - - assignees - - attachments - - blockedBy - - complete_instances - - completedDate - - contexts - - dateCreated - - dateModified - - due - - googleCalendarEventId - - googleCalendarExceptionEventId - - googleCalendarExceptionOriginalScheduled - - googleCalendarMovedOriginalDates - - icsEventId - - id - - occurrence_date - - occurrence_future_horizon - - occurrence_materialization - - occurrence_next_trigger - - occurrence_past_horizon - - occurrence_template - - priority - - projects - - recurrence - - recurrence_anchor - - recurrence_parent - - reminders - - scheduled - - skipped_instances - - status - - tags - - tasknotes_manual_order - - timeEntries - - timeEstimate - - title ---- - -# Task - -This type definition implements the TaskNotes contract for this mdbase collection. -Its JSON Schema describes persisted task frontmatter; collection and lifecycle -metadata describe generic mdbase behavior; `implements` maps the portable -TaskNotes task view and supplies TaskNotes behavior. - -Changes made here are loaded by TaskNotes. Portable changes made in TaskNotes -settings are written back while unknown extensions are preserved. diff --git a/public/contracts/artifacts/types/tasknotes-task/4.md b/public/contracts/artifacts/types/tasknotes-task/4.md deleted file mode 100644 index 54109af..0000000 --- a/public/contracts/artifacts/types/tasknotes-task/4.md +++ /dev/null @@ -1,468 +0,0 @@ ---- -kind: mdbase.type -name: task -version: 4 -description: A task managed by TaskNotes. -match: - where: - tags: - contains: task -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - type: object - additionalProperties: true - properties: - id: - type: string - minLength: 1 - title: - type: string - minLength: 1 - status: - enum: &a2 - - none - - open - - in-progress - - done - - cancelled - default: open - priority: - enum: &a4 - - none - - low - - normal - - high - default: normal - due: &a1 - anyOf: - - type: string - format: date - - type: string - format: date-time - scheduled: *a1 - contexts: - type: array - items: - type: string - projects: - type: array - items: - type: string - assignees: - type: array - items: - type: string - minLength: 1 - pattern: \S - uniqueItems: true - attachments: - type: array - items: - type: string - minLength: 1 - uniqueItems: true - timeEstimate: - type: integer - minimum: 0 - completedDate: - type: string - format: date - dateCreated: - type: string - format: date-time - dateModified: - type: string - format: date-time - recurrence: - type: string - recurrence_anchor: - enum: - - scheduled - - completion - default: scheduled - occurrence_materialization: - enum: - - manual - - on_completion - - rolling - default: manual - occurrence_next_trigger: - enum: - - completion - - completion_or_skip - default: completion - occurrence_template: - type: string - occurrence_past_horizon: - type: string - occurrence_future_horizon: - type: string - recurrence_parent: - type: string - occurrence_date: - type: string - format: date - tags: - type: array - items: - type: string - timeEntries: - type: array - items: - type: object - additionalProperties: false - properties: - startTime: - type: string - format: date-time - endTime: - type: string - format: date-time - description: - type: string - duration: - type: integer - reminders: - type: array - items: - oneOf: - - type: object - required: - - id - - type - - absoluteTime - additionalProperties: false - properties: - id: - type: string - type: - const: absolute - description: - type: string - absoluteTime: - type: string - format: date-time - - type: object - required: - - id - - type - - relatedTo - - offset - additionalProperties: false - properties: - id: - type: string - type: - const: relative - description: - type: string - relatedTo: - enum: - - due - - scheduled - offset: - type: string - blockedBy: - type: array - items: - type: object - additionalProperties: false - properties: - uid: - type: string - reltype: - type: string - gap: - type: string - required: - - uid - complete_instances: - type: array - items: - type: string - format: date - skipped_instances: - type: array - items: - type: string - format: date - icsEventId: - type: array - items: - type: string - googleCalendarEventId: - type: string - googleCalendarExceptionEventId: - type: string - googleCalendarExceptionOriginalScheduled: - type: string - format: date - googleCalendarMovedOriginalDates: - type: array - items: - type: string - format: date - tasknotes_manual_order: - type: string - allOf: - - if: - required: - - status - properties: - status: - enum: &a3 - - done - not: - required: - - recurrence - then: - required: - - completedDate - required: - - title - - status - - dateCreated -collection: - read_defaults: - status: open - priority: normal - recurrence_anchor: scheduled - occurrence_materialization: manual - occurrence_next_trigger: completion - links: - projects[]: - target_type: any - validate_exists: false - assignees[]: - validate_exists: false - attachments[]: - validate_exists: false - occurrence_template: - target_type: any - validate_exists: false - recurrence_parent: - target_type: task - validate_exists: false - blockedBy[].uid: - target_type: task - validate_exists: false - path: - runtime: tasknotes - template: "{{zettel}}" - folder: tasks - generated_by: tasknotes.filename.create - display: - name_field: title - unique: - - field: id - scope: type -lifecycle: - on_create: - set: - id: - uuid: true - dateCreated: - now: true - dateModified: - now: true - on_update: - set: - dateModified: - now: true -implements: - - contract: tasknotes.task - version: 0.3.0-rc.5 - fields: - id: id - title: title - status: status - priority: priority - due: due - scheduled: scheduled - contexts: contexts - projects: projects - assignees: assignees - attachments: attachments - timeEstimate: timeEstimate - completedDate: completedDate - dateCreated: dateCreated - dateModified: dateModified - recurrence: recurrence - recurrenceAnchor: recurrence_anchor - occurrenceMaterialization: occurrence_materialization - occurrenceNextTrigger: occurrence_next_trigger - occurrenceTemplate: occurrence_template - occurrencePastHorizon: occurrence_past_horizon - occurrenceFutureHorizon: occurrence_future_horizon - recurrenceParent: recurrence_parent - occurrenceDate: occurrence_date - tags: tags - timeEntries: timeEntries - reminders: reminders - blockedBy: blockedBy - completeInstances: complete_instances - skippedInstances: skipped_instances - icsEventId: icsEventId - googleCalendarEventId: googleCalendarEventId - googleCalendarExceptionEventId: googleCalendarExceptionEventId - googleCalendarExceptionOriginalScheduled: googleCalendarExceptionOriginalScheduled - googleCalendarMovedOriginalDates: googleCalendarMovedOriginalDates - sortOrder: tasknotes_manual_order - binding: - profiles: - - core-lite - - recurrence - - materialized-occurrences - capabilities: - - dependencies - - reminders - - attachments - - links - - time-tracking - - materialized-occurrences - - archive - - templating - title: - storage: frontmatter - filename_format: zettel - status: - values: *a2 - default: open - completed_values: *a3 - skipped_values: - - cancelled - default_skipped: cancelled - definitions: - - value: none - label: None - color: "#94a3b8" - is_completed: false - is_skipped: false - exclude_from_cycle: false - order: 0 - auto_archive: false - auto_archive_delay_minutes: 5 - - value: open - label: Open - color: "#64748b" - is_completed: false - is_skipped: false - exclude_from_cycle: false - order: 1 - auto_archive: false - auto_archive_delay_minutes: 5 - - value: in-progress - label: In progress - color: "#3b82f6" - is_completed: false - is_skipped: false - exclude_from_cycle: false - order: 2 - auto_archive: false - auto_archive_delay_minutes: 5 - - value: done - label: Done - color: "#22c55e" - is_completed: true - is_skipped: false - exclude_from_cycle: false - order: 3 - auto_archive: false - auto_archive_delay_minutes: 5 - - value: cancelled - label: Cancelled - color: "#94a3b8" - is_completed: false - is_skipped: true - exclude_from_cycle: true - order: 4 - auto_archive: false - auto_archive_delay_minutes: 5 - priority: - values: *a4 - default: normal - definitions: - - value: none - label: None - color: "#94a3b8" - weight: 0 - - value: low - label: Low - color: "#3b82f6" - weight: 1 - - value: normal - label: Normal - color: "#f59e0b" - weight: 2 - - value: high - label: High - color: "#ef4444" - weight: 3 - recurrence: - syntax: tasknotes - maintain_due_date_offset: true - reset_body_checkboxes: false - occurrences: - identity_roles: - - recurrenceParent - - occurrenceDate - default_materialization: manual - default_next_trigger: completion - past_horizon: P0D - future_horizon: P14D - links: - accepted_formats: - - wikilink - - markdown - write_format: wikilink - archive: - archived_tag: archived - move_on_archive: false - time_tracking: - auto_stop_on_complete: false - templating: - enabled: false - occurrence_enabled: false -x-tasknotes-generator: - managed_fields: - - assignees - - attachments - - blockedBy - - complete_instances - - completedDate - - contexts - - dateCreated - - dateModified - - due - - googleCalendarEventId - - googleCalendarExceptionEventId - - googleCalendarExceptionOriginalScheduled - - googleCalendarMovedOriginalDates - - icsEventId - - id - - occurrence_date - - occurrence_future_horizon - - occurrence_materialization - - occurrence_next_trigger - - occurrence_past_horizon - - occurrence_template - - priority - - projects - - recurrence - - recurrence_anchor - - recurrence_parent - - reminders - - scheduled - - skipped_instances - - status - - tags - - tasknotes_manual_order - - timeEntries - - timeEstimate - - title ---- -# Task - -Task records live under `tasks/`. diff --git a/public/contracts/artifacts/types/tasknotes-task/5.md b/public/contracts/artifacts/types/tasknotes-task/5.md deleted file mode 100644 index 5582b75..0000000 --- a/public/contracts/artifacts/types/tasknotes-task/5.md +++ /dev/null @@ -1,467 +0,0 @@ ---- -kind: mdbase.type -name: task -version: 4 -description: A task managed by TaskNotes. -match: - where: - tags: - contains: task -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - type: object - additionalProperties: true - properties: - id: - type: string - minLength: 1 - title: - type: string - minLength: 1 - status: - enum: &a2 - - none - - open - - in-progress - - done - - cancelled - default: open - priority: - enum: &a4 - - none - - low - - normal - - high - default: normal - due: &a1 - anyOf: - - type: string - format: date - - type: string - format: date-time - scheduled: *a1 - contexts: - type: array - items: - type: string - projects: - type: array - items: - type: string - assignees: - type: array - items: - type: string - minLength: 1 - pattern: \S - uniqueItems: true - attachments: - type: array - items: - type: string - minLength: 1 - uniqueItems: true - timeEstimate: - type: integer - minimum: 0 - completedDate: - type: string - format: date - dateCreated: - type: string - format: date-time - dateModified: - type: string - format: date-time - recurrence: - type: string - recurrence_anchor: - enum: - - scheduled - - completion - default: scheduled - occurrence_materialization: - enum: - - manual - - on_completion - - rolling - default: manual - occurrence_next_trigger: - enum: - - completion - - completion_or_skip - default: completion - occurrence_template: - type: string - occurrence_past_horizon: - type: string - occurrence_future_horizon: - type: string - recurrence_parent: - type: string - occurrence_date: - type: string - format: date - tags: - type: array - items: - type: string - timeEntries: - type: array - items: - type: object - additionalProperties: false - properties: - startTime: - type: string - format: date-time - endTime: - type: string - format: date-time - description: - type: string - duration: - type: integer - reminders: - type: array - items: - oneOf: - - type: object - required: - - id - - type - - absoluteTime - additionalProperties: false - properties: - id: - type: string - type: - const: absolute - description: - type: string - absoluteTime: - type: string - format: date-time - - type: object - required: - - id - - type - - relatedTo - - offset - additionalProperties: false - properties: - id: - type: string - type: - const: relative - description: - type: string - relatedTo: - enum: - - due - - scheduled - offset: - type: string - blockedBy: - type: array - items: - type: object - additionalProperties: false - properties: - uid: - type: string - reltype: - type: string - gap: - type: string - required: - - uid - complete_instances: - type: array - items: - type: string - format: date - skipped_instances: - type: array - items: - type: string - format: date - icsEventId: - type: array - items: - type: string - googleCalendarEventId: - type: string - googleCalendarExceptionEventId: - type: string - googleCalendarExceptionOriginalScheduled: - type: string - format: date - googleCalendarMovedOriginalDates: - type: array - items: - type: string - format: date - tasknotes_manual_order: - type: string - allOf: - - if: - required: - - status - properties: - status: - enum: &a3 - - done - not: - required: - - recurrence - then: - required: - - completedDate - required: - - title - - status - - dateCreated -collection: - read_defaults: - status: open - priority: normal - recurrence_anchor: scheduled - occurrence_materialization: manual - occurrence_next_trigger: completion - links: - projects[]: - target_type: any - validate_exists: false - assignees[]: - validate_exists: false - attachments[]: - validate_exists: false - occurrence_template: - target_type: any - validate_exists: false - recurrence_parent: - target_type: task - validate_exists: false - blockedBy[].uid: - target_type: task - validate_exists: false - path: - runtime: tasknotes - template: "{{zettel}}" - folder: tasks - generated_by: tasknotes.filename.create - display: - name_field: title - unique: - - field: id - scope: type -lifecycle: - on_create: - set: - id: - uuid: true - dateCreated: - now: true - dateModified: - now: true - on_update: - set: - dateModified: - now: true -implements: - - contract: tasknotes.task - version: 0.3.0-rc.5 - fields: - id: id - title: title - status: status - priority: priority - due: due - scheduled: scheduled - contexts: contexts - projects: projects - assignees: assignees - attachments: attachments - timeEstimate: timeEstimate - completedDate: completedDate - dateCreated: dateCreated - dateModified: dateModified - recurrence: recurrence - recurrenceAnchor: recurrence_anchor - occurrenceMaterialization: occurrence_materialization - occurrenceNextTrigger: occurrence_next_trigger - occurrenceTemplate: occurrence_template - occurrencePastHorizon: occurrence_past_horizon - occurrenceFutureHorizon: occurrence_future_horizon - recurrenceParent: recurrence_parent - occurrenceDate: occurrence_date - tags: tags - timeEntries: timeEntries - reminders: reminders - blockedBy: blockedBy - completeInstances: complete_instances - skippedInstances: skipped_instances - icsEventId: icsEventId - googleCalendarEventId: googleCalendarEventId - googleCalendarExceptionEventId: googleCalendarExceptionEventId - googleCalendarExceptionOriginalScheduled: googleCalendarExceptionOriginalScheduled - googleCalendarMovedOriginalDates: googleCalendarMovedOriginalDates - sortOrder: tasknotes_manual_order - binding: - profiles: - - core-lite - - recurrence - - materialized-occurrences - capabilities: - - dependencies - - reminders - - attachments - - links - - time-tracking - - materialized-occurrences - - archive - - templating - title: - storage: frontmatter - filename_format: zettel - status: - values: *a2 - default: open - completed_values: *a3 - skipped_values: - - cancelled - default_skipped: cancelled - definitions: - - value: none - label: None - color: "#94a3b8" - is_completed: false - is_skipped: false - exclude_from_cycle: false - order: 0 - auto_archive: false - auto_archive_delay_minutes: 5 - - value: open - label: Open - color: "#64748b" - is_completed: false - is_skipped: false - exclude_from_cycle: false - order: 1 - auto_archive: false - auto_archive_delay_minutes: 5 - - value: in-progress - label: In progress - color: "#3b82f6" - is_completed: false - is_skipped: false - exclude_from_cycle: false - order: 2 - auto_archive: false - auto_archive_delay_minutes: 5 - - value: done - label: Done - color: "#22c55e" - is_completed: true - is_skipped: false - exclude_from_cycle: false - order: 3 - auto_archive: false - auto_archive_delay_minutes: 5 - - value: cancelled - label: Cancelled - color: "#94a3b8" - is_completed: false - is_skipped: true - exclude_from_cycle: true - order: 4 - auto_archive: false - auto_archive_delay_minutes: 5 - priority: - values: *a4 - default: normal - definitions: - - value: none - label: None - color: "#94a3b8" - weight: 0 - - value: low - label: Low - color: "#3b82f6" - weight: 1 - - value: normal - label: Normal - color: "#f59e0b" - weight: 2 - - value: high - label: High - color: "#ef4444" - weight: 3 - recurrence: - syntax: tasknotes - maintain_due_date_offset: true - reset_body_checkboxes: false - occurrences: - identity_roles: - - recurrenceParent - - occurrenceDate - default_materialization: manual - default_next_trigger: completion - past_horizon: P0D - future_horizon: P14D - links: - accepted_formats: - - wikilink - - markdown - write_format: wikilink - archive: - archived_tag: archived - move_on_archive: false - time_tracking: - auto_stop_on_complete: false - templating: - enabled: false - occurrence_enabled: false -x-tasknotes-generator: - managed_fields: - - attachments - - blockedBy - - complete_instances - - completedDate - - contexts - - dateCreated - - dateModified - - due - - googleCalendarEventId - - googleCalendarExceptionEventId - - googleCalendarExceptionOriginalScheduled - - googleCalendarMovedOriginalDates - - icsEventId - - id - - occurrence_date - - occurrence_future_horizon - - occurrence_materialization - - occurrence_next_trigger - - occurrence_past_horizon - - occurrence_template - - priority - - projects - - recurrence - - recurrence_anchor - - recurrence_parent - - reminders - - scheduled - - skipped_instances - - status - - tags - - tasknotes_manual_order - - timeEntries - - timeEstimate - - title ---- -# Task - -Task records live under `tasks/`. diff --git a/public/contracts/artifacts/types/view/1.md b/public/contracts/artifacts/types/view/1.md deleted file mode 100644 index 9f38f2a..0000000 --- a/public/contracts/artifacts/types/view/1.md +++ /dev/null @@ -1,352 +0,0 @@ ---- -kind: mdbase.type -name: view -version: 1 -description: 'Saved views: shared query scope and stable named views' -match: - where: - type: view -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - title: View - description: 'Saved views: shared query scope and stable named views.' - type: object - required: - - type - - id - - version - - name - - views - properties: - type: - const: view - id: - $ref: '#/$defs/identifier' - version: - type: integer - minimum: 1 - name: - type: string - minLength: 1 - description: - type: string - query: - $ref: '#/$defs/sharedQuery' - properties: - $ref: '#/$defs/propertyMetadataSet' - summary_functions: - $ref: '#/$defs/summaryFunctionSet' - views: - type: array - minItems: 1 - items: - $ref: '#/$defs/view' - patternProperties: - ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$: - $ref: '#/$defs/extension' - additionalProperties: false - $defs: - identifier: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - typeName: - type: string - pattern: ^[A-Za-z][A-Za-z0-9_-]{0,127}$ - fieldName: - type: string - pattern: ^[A-Za-z_][A-Za-z0-9_:-]*$ - expression: - type: string - minLength: 1 - extension: - type: object - additionalProperties: true - typeList: - type: array - minItems: 1 - uniqueItems: true - items: - $ref: '#/$defs/typeName' - sharedQuery: - type: object - properties: - types: - $ref: '#/$defs/typeList' - where: - $ref: '#/$defs/expression' - context: - $ref: '#/$defs/viewContext' - projections: - $ref: '#/$defs/projectionSet' - patternProperties: - ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$: - $ref: '#/$defs/extension' - additionalProperties: false - viewContext: - type: object - required: - - this - properties: - this: - $ref: '#/$defs/thisContext' - patternProperties: - ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$: - $ref: '#/$defs/extension' - additionalProperties: false - thisContext: - type: object - properties: - on_missing: - enum: - - view - - 'null' - - error - default: view - types: - $ref: '#/$defs/typeList' - patternProperties: - ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$: - $ref: '#/$defs/extension' - additionalProperties: false - projectionSet: - type: object - propertyNames: - $ref: '#/$defs/fieldName' - additionalProperties: - $ref: '#/$defs/projection' - projection: - type: object - required: - - expr - properties: - expr: - $ref: '#/$defs/expression' - description: - type: string - patternProperties: - ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$: - $ref: '#/$defs/extension' - additionalProperties: false - propertyMetadataSet: - type: object - propertyNames: - type: string - minLength: 1 - additionalProperties: - $ref: '#/$defs/propertyMetadata' - propertyMetadata: - type: object - properties: - label: - type: string - description: - type: string - format: - type: string - hidden: - type: boolean - patternProperties: - ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$: - $ref: '#/$defs/extension' - additionalProperties: false - summaryFunctionSet: - type: object - propertyNames: - $ref: '#/$defs/fieldName' - additionalProperties: - $ref: '#/$defs/summaryFunction' - summaryFunction: - type: object - required: - - expr - properties: - expr: - $ref: '#/$defs/expression' - description: - type: string - patternProperties: - ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$: - $ref: '#/$defs/extension' - additionalProperties: false - view: - type: object - required: - - id - - name - properties: - id: - $ref: '#/$defs/identifier' - name: - type: string - minLength: 1 - description: - type: string - types: - $ref: '#/$defs/typeList' - where: - $ref: '#/$defs/expression' - context: - $ref: '#/$defs/viewContext' - projections: - $ref: '#/$defs/projectionSet' - select: - $ref: '#/$defs/select' - order_by: - $ref: '#/$defs/orderBy' - group_by: - $ref: '#/$defs/groupBy' - summaries: - $ref: '#/$defs/summaries' - limit: - type: integer - minimum: 0 - offset: - type: integer - minimum: 0 - include_body: - type: boolean - default: false - frontmatter_mode: - enum: - - effective - - persisted - - both - default: effective - presentation: - $ref: '#/$defs/presentation' - patternProperties: - ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$: - $ref: '#/$defs/extension' - additionalProperties: false - select: - type: array - minItems: 1 - items: - oneOf: - - type: string - minLength: 1 - - $ref: '#/$defs/selectExpression' - selectExpression: - type: object - required: - - name - - expr - properties: - name: - $ref: '#/$defs/fieldName' - expr: - $ref: '#/$defs/expression' - label: - type: string - description: - type: string - patternProperties: - ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$: - $ref: '#/$defs/extension' - additionalProperties: false - orderBy: - type: array - minItems: 1 - items: - type: object - required: - - field - properties: - field: - type: string - minLength: 1 - direction: - enum: - - asc - - desc - default: asc - additionalProperties: false - groupBy: - type: array - minItems: 1 - items: - type: object - required: - - field - properties: - field: - type: string - minLength: 1 - direction: - enum: - - asc - - desc - default: asc - additionalProperties: false - summaries: - type: array - minItems: 1 - items: - $ref: '#/$defs/summary' - summary: - type: object - required: - - field - - function - properties: - field: - type: string - minLength: 1 - function: - $ref: '#/$defs/identifier' - name: - $ref: '#/$defs/fieldName' - label: - type: string - additionalProperties: false - presentation: - type: object - required: - - type - properties: - type: - $ref: '#/$defs/identifier' - fallback: - $ref: '#/$defs/identifier' - mappings: - type: object - propertyNames: - $ref: '#/$defs/fieldName' - additionalProperties: - type: string - minLength: 1 - options: - type: object - additionalProperties: true - patternProperties: - ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$: - $ref: '#/$defs/extension' - additionalProperties: false -implements: -- contract: mdbase.view - version: 1.0.0 - fields: - id: id - version: version - name: name - description: description - query: query - properties: properties - summary_functions: summary_functions - views: views -collection: - display: - name_field: name ---- - -# View - -A view record stores shared query scope and one or more stable named views. -Tools that support saved views discover these records through the `mdbase.view` -contract and run each named view as an ordinary query. - -This type belongs to your collection once installed. You can rename fields or -change how records are matched, as long as the `implements` mapping still -points each contract field at the right frontmatter field. diff --git a/public/contracts/artifacts/types/view/2.md b/public/contracts/artifacts/types/view/2.md deleted file mode 100644 index 1cb8344..0000000 --- a/public/contracts/artifacts/types/view/2.md +++ /dev/null @@ -1,349 +0,0 @@ ---- -kind: mdbase.type -name: view -version: 2 -description: 'Saved views: shared query scope and stable named views' -match: - where: - type: view -schema: - dialect: json-schema-2020-12 - value: - $schema: https://json-schema.org/draft/2020-12/schema - title: View - description: 'Saved views: shared query scope and stable named views.' - type: object - required: - - id - - version - - name - - views - properties: - id: - $ref: '#/$defs/identifier' - version: - type: integer - minimum: 1 - name: - type: string - minLength: 1 - description: - type: string - query: - $ref: '#/$defs/sharedQuery' - properties: - $ref: '#/$defs/propertyMetadataSet' - summary_functions: - $ref: '#/$defs/summaryFunctionSet' - views: - type: array - minItems: 1 - items: - $ref: '#/$defs/view' - patternProperties: - ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$: - $ref: '#/$defs/extension' - additionalProperties: true - $defs: - identifier: - type: string - pattern: ^[A-Za-z][A-Za-z0-9._:-]*$ - typeName: - type: string - pattern: ^[A-Za-z][A-Za-z0-9_-]{0,127}$ - fieldName: - type: string - pattern: ^[A-Za-z_][A-Za-z0-9_:-]*$ - expression: - type: string - minLength: 1 - extension: - type: object - additionalProperties: true - typeList: - type: array - minItems: 1 - uniqueItems: true - items: - $ref: '#/$defs/typeName' - sharedQuery: - type: object - properties: - types: - $ref: '#/$defs/typeList' - where: - $ref: '#/$defs/expression' - context: - $ref: '#/$defs/viewContext' - projections: - $ref: '#/$defs/projectionSet' - patternProperties: - ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$: - $ref: '#/$defs/extension' - additionalProperties: false - viewContext: - type: object - required: - - this - properties: - this: - $ref: '#/$defs/thisContext' - patternProperties: - ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$: - $ref: '#/$defs/extension' - additionalProperties: false - thisContext: - type: object - properties: - on_missing: - enum: - - view - - 'null' - - error - default: view - types: - $ref: '#/$defs/typeList' - patternProperties: - ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$: - $ref: '#/$defs/extension' - additionalProperties: false - projectionSet: - type: object - propertyNames: - $ref: '#/$defs/fieldName' - additionalProperties: - $ref: '#/$defs/projection' - projection: - type: object - required: - - expr - properties: - expr: - $ref: '#/$defs/expression' - description: - type: string - patternProperties: - ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$: - $ref: '#/$defs/extension' - additionalProperties: false - propertyMetadataSet: - type: object - propertyNames: - type: string - minLength: 1 - additionalProperties: - $ref: '#/$defs/propertyMetadata' - propertyMetadata: - type: object - properties: - label: - type: string - description: - type: string - format: - type: string - hidden: - type: boolean - patternProperties: - ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$: - $ref: '#/$defs/extension' - additionalProperties: false - summaryFunctionSet: - type: object - propertyNames: - $ref: '#/$defs/fieldName' - additionalProperties: - $ref: '#/$defs/summaryFunction' - summaryFunction: - type: object - required: - - expr - properties: - expr: - $ref: '#/$defs/expression' - description: - type: string - patternProperties: - ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$: - $ref: '#/$defs/extension' - additionalProperties: false - view: - type: object - required: - - id - - name - properties: - id: - $ref: '#/$defs/identifier' - name: - type: string - minLength: 1 - description: - type: string - types: - $ref: '#/$defs/typeList' - where: - $ref: '#/$defs/expression' - context: - $ref: '#/$defs/viewContext' - projections: - $ref: '#/$defs/projectionSet' - select: - $ref: '#/$defs/select' - order_by: - $ref: '#/$defs/orderBy' - group_by: - $ref: '#/$defs/groupBy' - summaries: - $ref: '#/$defs/summaries' - limit: - type: integer - minimum: 0 - offset: - type: integer - minimum: 0 - include_body: - type: boolean - default: false - frontmatter_mode: - enum: - - effective - - persisted - - both - default: effective - presentation: - $ref: '#/$defs/presentation' - patternProperties: - ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$: - $ref: '#/$defs/extension' - additionalProperties: false - select: - type: array - minItems: 1 - items: - oneOf: - - type: string - minLength: 1 - - $ref: '#/$defs/selectExpression' - selectExpression: - type: object - required: - - name - - expr - properties: - name: - $ref: '#/$defs/fieldName' - expr: - $ref: '#/$defs/expression' - label: - type: string - description: - type: string - patternProperties: - ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$: - $ref: '#/$defs/extension' - additionalProperties: false - orderBy: - type: array - minItems: 1 - items: - type: object - required: - - field - properties: - field: - type: string - minLength: 1 - direction: - enum: - - asc - - desc - default: asc - additionalProperties: false - groupBy: - type: array - minItems: 1 - items: - type: object - required: - - field - properties: - field: - type: string - minLength: 1 - direction: - enum: - - asc - - desc - default: asc - additionalProperties: false - summaries: - type: array - minItems: 1 - items: - $ref: '#/$defs/summary' - summary: - type: object - required: - - field - - function - properties: - field: - type: string - minLength: 1 - function: - $ref: '#/$defs/identifier' - name: - $ref: '#/$defs/fieldName' - label: - type: string - additionalProperties: false - presentation: - type: object - required: - - type - properties: - type: - $ref: '#/$defs/identifier' - fallback: - $ref: '#/$defs/identifier' - mappings: - type: object - propertyNames: - $ref: '#/$defs/fieldName' - additionalProperties: - type: string - minLength: 1 - options: - type: object - additionalProperties: true - patternProperties: - ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$: - $ref: '#/$defs/extension' - additionalProperties: false -implements: -- contract: mdbase.view - version: 1.0.0 - fields: - id: id - version: version - name: name - description: description - query: query - properties: properties - summary_functions: summary_functions - views: views -collection: - display: - name_field: name ---- - -# View - -A view record stores shared query scope and one or more stable named views. -Tools that support saved views discover these records through the `mdbase.view` -contract and run each named view as an ordinary query. - -This type belongs to your collection once installed. You can rename fields or -change how records are matched, as long as the `implements` mapping still -points each contract field at the right frontmatter field. diff --git a/public/contracts/catalog.json b/public/contracts/catalog.json deleted file mode 100644 index e9a079b..0000000 --- a/public/contracts/catalog.json +++ /dev/null @@ -1,884 +0,0 @@ -{ - "catalog_version": 2, - "id": "dev.mdbase.first-party", - "name": "mdbase contracts", - "description": "Reviewed first-party contracts and starter type packs for mdbase collections.", - "homepage": "https://mdbase.dev/contracts/", - "publisher": { - "name": "mdbase", - "url": "https://mdbase.dev/" - }, - "contracts": [ - { - "id": "mdbase.comment", - "version": "1.0.0", - "name": "Comment", - "description": "Comments, replies and suggested edits anchored to text in Markdown records.", - "contract_type": "record", - "digest": "sha256:c85663fbb339d33e8e67825c81fc160fbac00285a1687cbe99187bad7f58878d", - "artifact": "./artifacts/contracts/mdbase.comment/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.contact", - "version": "1.0.0", - "name": "Contact", - "description": "A compact application-facing view of a person or organisation.", - "contract_type": "record", - "digest": "sha256:e3634a35737ada5eb62e3e15f1c0c9d2e27c55a3f98dfab94bbc14c40404903d", - "artifact": "./artifacts/contracts/mdbase.contact/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.person", - "version": "1.0.0", - "name": "Person", - "description": "A portable person reference with editable account identity associations.", - "contract_type": "record", - "digest": "sha256:e2a9435ad01a2c06c151bf6af62a9d04aa30faa8e6128e4b5fe39378c767465c", - "artifact": "./artifacts/contracts/mdbase.person/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.person", - "version": "2.0.0", - "name": "Person", - "description": "A person record, referenced by links, with editable account identity associations.", - "contract_type": "record", - "digest": "sha256:2899b149b1602bd4e51ff8e87c82dc92da3f690f4e89b1a6caf5b2b555540fe5", - "artifact": "./artifacts/contracts/mdbase.person/2.0.0.md", - "standards": [] - }, - { - "id": "mdbase.record.created", - "version": "1.0.0", - "name": "Record created", - "description": "Published after a record is created and derived collection state is consistent.", - "contract_type": "event", - "digest": "sha256:4c157f94e63d1f4fb1a74da640e03264ccb6c78cfa9f88ddb71b09c8bd6d1d44", - "artifact": "./artifacts/contracts/mdbase.record.created/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.record.deleted", - "version": "1.0.0", - "name": "Record deleted", - "description": "Published after a record is deleted and derived collection state is consistent.", - "contract_type": "event", - "digest": "sha256:cb4f4a09f9f9b1f7f5e2207de0074ce02fd89008c08386626fd964a29299f956", - "artifact": "./artifacts/contracts/mdbase.record.deleted/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.record.modified", - "version": "1.0.0", - "name": "Record modified", - "description": "Published after a record is modified and derived collection state is consistent.", - "contract_type": "event", - "digest": "sha256:2f670ef18bf7330fbba73861f41889ee946b33644074ca7366e88913f6e4d88a", - "artifact": "./artifacts/contracts/mdbase.record.modified/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.record.renamed", - "version": "1.0.0", - "name": "Record renamed", - "description": "Published after a record is renamed and derived collection state is consistent.", - "contract_type": "event", - "digest": "sha256:b6c507198379ba48408c9b48161a1c22d46dad2d291691af449167618484bb4c", - "artifact": "./artifacts/contracts/mdbase.record.renamed/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.action-attempt", - "version": "1.0.0", - "name": "Durable action attempt", - "description": "Durable invocation intent and outcome evidence using the shared interoperability envelope.", - "contract_type": "record", - "digest": "sha256:04c1bf55580d0d280d2be645c56177da25c2d0129f8fa71def7d5f96cf0ea629", - "artifact": "./artifacts/contracts/mdbase.runtime.action-attempt/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.capability-grant", - "version": "1.0.0", - "name": "Capability grant evidence", - "description": "A materialized authorization grant scoped independently from contract conformance.", - "contract_type": "record", - "digest": "sha256:1cd3a2ff5fdc9294f766e538c371ed278ad4c54452480ba6fcc2870be08b47a1", - "artifact": "./artifacts/contracts/mdbase.runtime.capability-grant/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.checkpoint", - "version": "1.0.0", - "name": "Runtime checkpoint", - "description": "A durable, lease-safe workflow continuation.", - "contract_type": "record", - "digest": "sha256:6413676d7482a71b31cbe4abf8c5a543a54a530ef62f669f8ef8e21bcc6bc237", - "artifact": "./artifacts/contracts/mdbase.runtime.checkpoint/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.dead-letter", - "version": "1.0.0", - "name": "Runtime dead letter", - "description": "Retained event or action evidence that cannot be processed safely.", - "contract_type": "record", - "digest": "sha256:737d08bad6662e087c3393f6f17d24374f258d60b41112a3f864cb5138af8edd", - "artifact": "./artifacts/contracts/mdbase.runtime.dead-letter/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.diagnostic", - "version": "1.0.0", - "name": "Runtime diagnostic", - "description": "A machine-readable durable runtime diagnostic.", - "contract_type": "record", - "digest": "sha256:2e7379de9ceefa6435e9c66a71f4292e4805e8038ed6496c83dad946900267f6", - "artifact": "./artifacts/contracts/mdbase.runtime.diagnostic/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.policy", - "version": "1.0.0", - "name": "Runtime policy", - "description": "Local authorization, executor, limit, and provider-selection policy.", - "contract_type": "record", - "digest": "sha256:319a9bd4ca62a246871ee52e0ef0250a82c240cb14a95f88e4a505ad04450300", - "artifact": "./artifacts/contracts/mdbase.runtime.policy/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.provider-registration", - "version": "1.0.0", - "name": "Provider registration evidence", - "description": "An optional audit snapshot of a verified interoperability declaration; it never activates code.", - "contract_type": "record", - "digest": "sha256:97d157efaeb311745fc84e2cbe01e8147aaf44109384090c154527b68838d766", - "artifact": "./artifacts/contracts/mdbase.runtime.provider-registration/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.run.cancel", - "version": "1.0.0", - "name": "Cancel durable runtime run", - "description": "Request cooperative cancellation of one durable runtime run.", - "contract_type": "action", - "digest": "sha256:949f039334cfc3f096beb870419baa08c3b40679b184e9849f9330a34a6f524d", - "artifact": "./artifacts/contracts/mdbase.runtime.run.cancel/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.run", - "version": "1.0.0", - "name": "Durable run", - "description": "The durable state and immutable admitted plan for one workflow execution.", - "contract_type": "record", - "digest": "sha256:7e46270c951e6634fe25519dff10523652365f8adf30b034f01e29e1ca48cadb", - "artifact": "./artifacts/contracts/mdbase.runtime.run/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.timer.fired", - "version": "1.0.0", - "name": "Runtime timer fired", - "description": "Published with scheduling evidence and opaque application data when the current generation of a durable timer fires.", - "contract_type": "event", - "digest": "sha256:9381a2c6778a3268758ac235e3c3b66991a769fa8e19f7303d4404b1e7e62bc6", - "artifact": "./artifacts/contracts/mdbase.runtime.timer.fired/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.timer", - "version": "1.0.0", - "name": "Runtime timer", - "description": "A generation-safe one-shot timer that publishes through the interoperability profile.", - "contract_type": "record", - "digest": "sha256:0500a421e81eef09c37bc4ef559e3805843e87a6e1b2cf2a393da4d76d4384fc", - "artifact": "./artifacts/contracts/mdbase.runtime.timer/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.workflow", - "version": "1.0.0", - "name": "Durable workflow", - "description": "A portable workflow whose event and action references are resolved and pinned at admission.", - "contract_type": "record", - "digest": "sha256:7cf8ed016bf6232d9c1abc8d8bb9bb25fd2af1ffa6c6094317aa65baf3c31049", - "artifact": "./artifacts/contracts/mdbase.runtime.workflow/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.view", - "version": "1.0.0", - "name": "Saved view", - "description": "Shared query scope and stable named views executable through the Query profile.", - "contract_type": "record", - "digest": "sha256:91eae42371c2d411b20d3c976aece3071bbd753963b77b6bcdc26137a8fdcded", - "artifact": "./artifacts/contracts/mdbase.view/1.0.0.md", - "standards": [] - }, - { - "id": "obsidian.base", - "version": "1.0.0", - "name": "Obsidian Base", - "description": "An Obsidian Bases saved-view source stored as a YAML document record.", - "contract_type": "record", - "digest": "sha256:fca77a9c845223784d4af7f5e13e2f149295621ad1b794ea9bb4d99f604467e8", - "artifact": "./artifacts/contracts/obsidian.base/1.0.0.md", - "standards": [] - }, - { - "id": "tasknotes.task", - "version": "0.3.0-rc.3", - "name": "TaskNotes task", - "description": "Portable task data and behavior defined by tasknotes-spec 0.3.0-rc.3.", - "contract_type": "record", - "digest": "sha256:4761ee78615882170cae6e52590f98917f549bd89d852a0c40568583394d7264", - "artifact": "./artifacts/contracts/tasknotes.task/0.3.0-rc.3.md", - "standards": [] - }, - { - "id": "tasknotes.task", - "version": "0.3.0-rc.5", - "name": "TaskNotes task", - "description": "Portable task data and behavior defined by tasknotes-spec 0.3.0-rc.5.", - "contract_type": "record", - "digest": "sha256:ecadd00700e249940f4244aaa5b5985a96557d13340463ec491dfa5e89b032a4", - "artifact": "./artifacts/contracts/tasknotes.task/0.3.0-rc.5.md", - "standards": [] - } - ], - "packs": [ - { - "id": "mdbase.comment", - "version": "1.0.0", - "name": "Comments type pack", - "description": "Comments, replies and suggested edits anchored to text in Markdown records.", - "digest": "sha256:37729ce8eca79ed52b669b191350056cbd23d2fe1453d38b56805979ce0d9e29", - "provision": "./packs/mdbase.comment/1.0.0.json", - "provides": [ - { - "id": "mdbase.comment", - "version": "1.0.0", - "digest": "sha256:c2c5b3f3013d10625310401e9f9149ffa2d09c5b7d91b4fc97688d3ac010bec5" - } - ], - "resource_count": 3, - "display": { - "name": "Comments", - "summary": "Discuss and suggest edits to notes without changing their text, in any app that reads comments.", - "category": "work", - "audience": "general", - "icon": "chat-circle", - "badges": [ - "Portable comments", - "Suggested edits" - ] - }, - "installation": { - "visibility": "hidden", - "recommendation": "optional", - "primary_type": "comment", - "types": [ - { - "name": "comment", - "label": "Comment" - } - ] - } - }, - { - "id": "mdbase.comment", - "version": "1.0.1", - "name": "Comments type pack", - "description": "Comments, replies and suggested edits anchored to text in Markdown records.", - "digest": "sha256:3b3940270e96876062d8fcdf293edb7eeb99985987b8821f8478acf9663d1e83", - "provision": "./packs/mdbase.comment/1.0.1.json", - "provides": [ - { - "id": "mdbase.comment", - "version": "1.0.0", - "digest": "sha256:c2c5b3f3013d10625310401e9f9149ffa2d09c5b7d91b4fc97688d3ac010bec5" - } - ], - "resource_count": 3, - "display": { - "name": "Comments", - "summary": "Discuss and suggest edits to notes without changing their text, in any app that reads comments.", - "category": "work", - "audience": "general", - "icon": "chat-circle", - "badges": [ - "Portable comments", - "Suggested edits" - ] - }, - "installation": { - "visibility": "default", - "recommendation": "optional", - "primary_type": "comment", - "types": [ - { - "name": "comment", - "label": "Comment" - } - ] - } - }, - { - "id": "mdbase.contact", - "version": "1.0.0", - "name": "Contact type pack", - "description": "A compact contact contract and a friendly, editable Contact type.", - "digest": "sha256:70c3ab048da407a56fe265a840c83a2d1df90aa351fde0d50ce1459a155cc4e9", - "provision": "./packs/mdbase.contact/1.0.0.json", - "provides": [ - { - "id": "mdbase.contact", - "version": "1.0.0", - "digest": "sha256:49cfe15403dfc741a693e89a2f4d2857de306f391d02cb03e67bfaf0aa1d6b0d" - } - ], - "resource_count": 3, - "display": { - "name": "Contact", - "summary": "Keep people and organisations with familiar names, email addresses, phone numbers, and birthdays.", - "category": "people", - "audience": "general", - "icon": "address-book", - "badges": [ - "Portable contact semantics" - ] - }, - "installation": { - "visibility": "hidden", - "recommendation": "user", - "primary_type": "contact", - "types": [ - { - "name": "contact", - "label": "Contact" - } - ] - } - }, - { - "id": "mdbase.contact", - "version": "1.1.0", - "name": "People and contacts type pack", - "description": "Portable people, editable account identity associations, and familiar contact fields.", - "digest": "sha256:14bba55df0574401b46ae08e5ef1e41e615d1477f70c3cc202eb9ff179287864", - "provision": "./packs/mdbase.contact/1.1.0.json", - "provides": [ - { - "id": "mdbase.person", - "version": "1.0.0", - "digest": "sha256:cda32ead27eaf70440efe3fadd8b5334df9af82f378b2af1bc786f7ab0bd0fc3" - }, - { - "id": "mdbase.contact", - "version": "1.0.0", - "digest": "sha256:49cfe15403dfc741a693e89a2f4d2857de306f391d02cb03e67bfaf0aa1d6b0d" - } - ], - "resource_count": 6, - "display": { - "name": "People and contacts", - "summary": "Reference people across apps and collections without tying records to account membership.", - "category": "people", - "audience": "general", - "icon": "user", - "badges": [ - "Portable person references" - ] - }, - "installation": { - "visibility": "hidden", - "recommendation": "user", - "primary_type": "contact", - "types": [ - { - "name": "contact", - "label": "Contact" - }, - { - "name": "person", - "label": "Person" - } - ] - } - }, - { - "id": "mdbase.contact", - "version": "1.2.0", - "name": "People type pack", - "description": "Portable people, editable account identity associations, and familiar contact fields.", - "digest": "sha256:dbbb3a874cfc5d69a2a5793c86dab801c16438d58a270b48bc7376fc8bbdfa2d", - "provision": "./packs/mdbase.contact/1.2.0.json", - "provides": [ - { - "id": "mdbase.person", - "version": "2.0.0", - "digest": "sha256:f16c462a1fd422f44ed055002f8476ec53c164107647fec782aeb74adeab2f9d" - }, - { - "id": "mdbase.contact", - "version": "1.0.0", - "digest": "sha256:49cfe15403dfc741a693e89a2f4d2857de306f391d02cb03e67bfaf0aa1d6b0d" - } - ], - "resource_count": 7, - "display": { - "name": "People", - "summary": "Reference people across apps and collections without tying records to account membership.", - "category": "people", - "audience": "general", - "icon": "user", - "badges": [ - "Portable person references" - ] - }, - "installation": { - "visibility": "hidden", - "recommendation": "user", - "primary_type": "person", - "types": [ - { - "name": "person", - "label": "Person" - } - ] - } - }, - { - "id": "mdbase.contact", - "version": "1.3.0", - "name": "People type pack", - "description": "Portable people, editable account identity associations, and familiar contact fields.", - "digest": "sha256:48fc070ae00c61ab5b20b9ffb385d20d2a468328da07e45e67c99602b05d02e8", - "provision": "./packs/mdbase.contact/1.3.0.json", - "provides": [ - { - "id": "mdbase.person", - "version": "2.0.0", - "digest": "sha256:f16c462a1fd422f44ed055002f8476ec53c164107647fec782aeb74adeab2f9d" - }, - { - "id": "mdbase.contact", - "version": "1.0.0", - "digest": "sha256:49cfe15403dfc741a693e89a2f4d2857de306f391d02cb03e67bfaf0aa1d6b0d" - } - ], - "resource_count": 7, - "display": { - "name": "People", - "summary": "Reference people across apps and collections without tying records to account membership.", - "category": "people", - "audience": "general", - "icon": "user", - "badges": [ - "Portable person references" - ] - }, - "installation": { - "visibility": "hidden", - "recommendation": "user", - "primary_type": "person", - "types": [ - { - "name": "person", - "label": "Person" - } - ] - } - }, - { - "id": "mdbase.contact", - "version": "1.4.0", - "name": "People type pack", - "description": "Portable people, editable account identity associations, and familiar contact fields.", - "digest": "sha256:741fcf0f50d13538eda1c9ee32df4d85e32549b8fb730350bb80b3323b09df93", - "provision": "./packs/mdbase.contact/1.4.0.json", - "provides": [ - { - "id": "mdbase.person", - "version": "2.0.0", - "digest": "sha256:f16c462a1fd422f44ed055002f8476ec53c164107647fec782aeb74adeab2f9d" - }, - { - "id": "mdbase.contact", - "version": "1.0.0", - "digest": "sha256:49cfe15403dfc741a693e89a2f4d2857de306f391d02cb03e67bfaf0aa1d6b0d" - } - ], - "resource_count": 7, - "display": { - "name": "People", - "summary": "Reference people across apps and collections without tying records to account membership.", - "category": "people", - "audience": "general", - "icon": "user", - "badges": [ - "Portable person references" - ] - }, - "installation": { - "visibility": "default", - "recommendation": "user", - "primary_type": "person", - "types": [ - { - "name": "person", - "label": "Person" - } - ] - } - }, - { - "id": "mdbase.runtime.standard", - "version": "0.2.0", - "name": "mdbase durable runtime standard library", - "description": "Runtime record implementations and inspectable built-in event/action contracts.", - "digest": "sha256:5d65a140774d673ab9e2e52b493799d4a4db7172e746474ffe45336ef3078577", - "provision": "./packs/mdbase.runtime.standard/0.2.0.json", - "provides": [ - { - "id": "mdbase.runtime.action-attempt", - "version": "1.0.0", - "digest": "sha256:06c3c86d3eb742050c26486a637acad8816399c87c7e981114cc3e1836873057" - }, - { - "id": "mdbase.runtime.capability-grant", - "version": "1.0.0", - "digest": "sha256:409aab0a7341788e1791ee6e47b5ff96b6b280e0f1dc3b6e18d467e5fc4bd971" - }, - { - "id": "mdbase.runtime.checkpoint", - "version": "1.0.0", - "digest": "sha256:e66aaa1ed134f5951308952cc681a0314c7322b25142a2dbcd2a0e76fffd8ebc" - }, - { - "id": "mdbase.runtime.dead-letter", - "version": "1.0.0", - "digest": "sha256:75428a52dd283104624b9177c5e90658375c6f6cceb27334af4243dc7b293ce4" - }, - { - "id": "mdbase.runtime.diagnostic", - "version": "1.0.0", - "digest": "sha256:ac2ad3683005373330b2b95b02a603d329ca4934f9ba5cc3294562e1f66e5004" - }, - { - "id": "mdbase.runtime.policy", - "version": "1.0.0", - "digest": "sha256:a67936dd3e29d50d85cd7004f350f38f76a773412fb74fca69b578e8f82e23a1" - }, - { - "id": "mdbase.runtime.provider-registration", - "version": "1.0.0", - "digest": "sha256:560c44fe51baf9357705e46c27d89b13b161f14ebe0b62d2d091048bbcf70587" - }, - { - "id": "mdbase.runtime.run", - "version": "1.0.0", - "digest": "sha256:1d6f66ae39655bbdd57d800b51493ec49ba81ddfd12f7b07b731cd6cf90eac02" - }, - { - "id": "mdbase.runtime.timer", - "version": "1.0.0", - "digest": "sha256:22bdd0bcfc4b2c59705526484c9d0d4d0580fb87abd2e9beae93d4464174602f" - }, - { - "id": "mdbase.runtime.workflow", - "version": "1.0.0", - "digest": "sha256:4ca1095cbe226ac5fc4394af0242fac9e4cb0e3c73a6a8a5f4899fac5d373604" - } - ], - "resource_count": 43, - "display": { - "name": "Runtime standard library", - "summary": "Internal records and contracts for durable workflows, runs, timers, and diagnostics.", - "category": "infrastructure", - "audience": "infrastructure", - "icon": "terminal-window", - "badges": [ - "Runtime 0.2" - ] - }, - "installation": { - "visibility": "advanced", - "recommendation": "integration-managed", - "primary_type": null, - "caution": "Most collections do not need this pack. Install it only when a runtime integration asks you to.", - "types": [ - { - "name": "runtime_workflow", - "label": "Runtime workflow" - }, - { - "name": "runtime_policy", - "label": "Runtime policy" - }, - { - "name": "runtime_provider_registration", - "label": "Runtime provider registration" - }, - { - "name": "runtime_capability_grant", - "label": "Runtime capability grant" - }, - { - "name": "runtime_run", - "label": "Runtime run" - }, - { - "name": "runtime_action_attempt", - "label": "Runtime action attempt" - }, - { - "name": "runtime_checkpoint", - "label": "Runtime checkpoint" - }, - { - "name": "runtime_timer", - "label": "Runtime timer" - }, - { - "name": "runtime_diagnostic", - "label": "Runtime diagnostic" - }, - { - "name": "runtime_dead_letter", - "label": "Runtime dead letter" - } - ] - } - }, - { - "id": "mdbase.view", - "version": "1.0.0", - "name": "Saved views", - "description": "The mdbase.view contract and an editable View type for saved, reusable queries.", - "digest": "sha256:d2a3ff8629699b183bb8117d7499697fecc7685ed8558cae6d9a87311d7cfd05", - "provision": "./packs/mdbase.view/1.0.0.json", - "provides": [ - { - "id": "mdbase.view", - "version": "1.0.0", - "digest": "sha256:0918acefce08cddd778fab768fe4f2e4615d263a0eec3e5330b6897c686d744e" - } - ], - "resource_count": 3, - "display": { - "name": "Saved views", - "summary": "Save reusable queries that any view-aware app can list and run.", - "category": "work", - "audience": "general", - "icon": "table", - "badges": [ - "Portable views" - ] - }, - "installation": { - "visibility": "hidden", - "recommendation": "optional", - "primary_type": "view", - "types": [ - { - "name": "view", - "label": "View" - } - ] - } - }, - { - "id": "mdbase.view", - "version": "1.0.1", - "name": "Saved views", - "description": "The mdbase.view contract and an editable View type for saved, reusable queries.", - "digest": "sha256:e93db5cd8449eb3b1e3cb795b0bf0477fc90124363745dd9aef7a88b1fbc8752", - "provision": "./packs/mdbase.view/1.0.1.json", - "provides": [ - { - "id": "mdbase.view", - "version": "1.0.0", - "digest": "sha256:0918acefce08cddd778fab768fe4f2e4615d263a0eec3e5330b6897c686d744e" - } - ], - "resource_count": 3, - "display": { - "name": "Saved views", - "summary": "Save reusable queries that any view-aware app can list and run.", - "category": "work", - "audience": "general", - "icon": "table", - "badges": [ - "Portable views" - ] - }, - "installation": { - "visibility": "default", - "recommendation": "optional", - "primary_type": "view", - "types": [ - { - "name": "view", - "label": "View" - } - ] - } - }, - { - "id": "obsidian.base", - "version": "1.0.0", - "name": "Obsidian Bases", - "description": "The obsidian.base contract and an editable type that stores Obsidian Bases as records.", - "digest": "sha256:8251b351a4b00c4ea3f4d49988ae45ab52ceaf2420f57ce8105ca4cfe5eafd50", - "provision": "./packs/obsidian.base/1.0.0.json", - "provides": [ - { - "id": "obsidian.base", - "version": "1.0.0", - "digest": "sha256:37e8a0bfb32bb4795c1b3c5dec613c32429aaa765dc33e4adc0c627a48f5c1ff" - } - ], - "resource_count": 2, - "display": { - "name": "Obsidian Bases", - "summary": "Use Obsidian Bases files as saved views that any view-aware app can list and run.", - "category": "work", - "audience": "general", - "icon": "table", - "badges": [ - "Obsidian compatible" - ] - }, - "installation": { - "visibility": "default", - "recommendation": "optional", - "primary_type": "obsidian_base", - "types": [ - { - "name": "obsidian_base", - "label": "Obsidian base" - } - ] - } - }, - { - "id": "tasknotes.task", - "version": "0.3.0-rc.12", - "name": "TaskNotes task type pack", - "description": "The portable TaskNotes task contract and an editable TaskNotes task type.", - "digest": "sha256:b1a051354b5af28c2a623f3b01db0d0d463c944605daf2c4c30069fcb99d3ce5", - "provision": "./packs/tasknotes.task/0.3.0-rc.12.json", - "provides": [ - { - "id": "tasknotes.task", - "version": "0.3.0-rc.3", - "digest": "sha256:48b9017ac0896ffbdee4d14fc0325ef86916bf8789da4ac8a4cd246435887155" - } - ], - "resource_count": 4, - "display": { - "name": "TaskNotes tasks", - "summary": "Manage portable Markdown tasks with dates, recurrence, reminders, relationships, and time tracking.", - "category": "work", - "audience": "general", - "icon": "square-check-big", - "badges": [ - "TaskNotes compatible" - ] - }, - "installation": { - "visibility": "default", - "recommendation": "integration-managed", - "primary_type": "task", - "caution": "TaskNotes applications manage the contract and schemas; the installed task type remains editable.", - "types": [ - { - "name": "task", - "label": "Task" - } - ] - } - }, - { - "id": "tasknotes.task", - "version": "0.3.0-rc.17", - "name": "TaskNotes task type pack", - "description": "Portable tasks whose assignments link to person records, with a reviewed, atomic starter upgrade that keeps each collection's generator bookkeeping.", - "digest": "sha256:aa03bd096f62868b4b414e753cd01024d33d8cd193c902f3cb0f3526c3149e8e", - "provision": "./packs/tasknotes.task/0.3.0-rc.17.json", - "provides": [ - { - "id": "tasknotes.task", - "version": "0.3.0-rc.5", - "digest": "sha256:dde71d0d776aa0069ee627fe3c10b1a20f87ba36929a16790598ebfb4e8ebf04" - } - ], - "resource_count": 4, - "display": { - "name": "TaskNotes tasks", - "summary": "Manage portable Markdown tasks, assignments, dates, recurrence, reminders, and time tracking.", - "category": "work", - "audience": "general", - "icon": "square-check-big", - "badges": [ - "TaskNotes compatible" - ] - }, - "installation": { - "visibility": "hidden", - "recommendation": "integration-managed", - "primary_type": "task", - "caution": "Upgrades the previous starter type while preserving independent customizations. Conflicts or other references to the previous contract block the whole upgrade.", - "types": [ - { - "name": "task", - "label": "Task" - } - ] - } - }, - { - "id": "tasknotes.task", - "version": "0.3.0-rc.18", - "name": "TaskNotes task type pack", - "description": "Portable tasks whose assignments link to person records, with a reviewed, atomic upgrade from every TaskNotes starter published before.", - "digest": "sha256:9a9ebc26e6f63ad2fc3d92f87d38f6c140a3af90408de47d667ae7b9ba0dc9ef", - "provision": "./packs/tasknotes.task/0.3.0-rc.18.json", - "provides": [ - { - "id": "tasknotes.task", - "version": "0.3.0-rc.5", - "digest": "sha256:dde71d0d776aa0069ee627fe3c10b1a20f87ba36929a16790598ebfb4e8ebf04" - } - ], - "resource_count": 4, - "display": { - "name": "TaskNotes tasks", - "summary": "Manage portable Markdown tasks, assignments, dates, recurrence, reminders, and time tracking.", - "category": "work", - "audience": "general", - "icon": "square-check-big", - "badges": [ - "TaskNotes compatible" - ] - }, - "installation": { - "visibility": "default", - "recommendation": "integration-managed", - "primary_type": "task", - "caution": "Upgrades the previous starter type while preserving independent customizations. Conflicts or other references to the previous contract block the whole upgrade.", - "types": [ - { - "name": "task", - "label": "Task" - } - ] - } - } - ] -} diff --git a/public/contracts/packs/mdbase.comment/1.0.0.json b/public/contracts/packs/mdbase.comment/1.0.0.json deleted file mode 100644 index 35a22ea..0000000 --- a/public/contracts/packs/mdbase.comment/1.0.0.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "manifest": { - "kind": "mdbase.type-pack", - "id": "mdbase.comment", - "version": "1.0.0", - "name": "Comments type pack", - "description": "Comments, replies and suggested edits anchored to text in Markdown records.", - "resources": [ - { - "kind": "schema", - "mode": "managed", - "source": "schemas/mdbase.comment/1.0.0.schema.json", - "target": "schemas/mdbase.comment/1.0.0.schema.json", - "digest": "sha256:b845720a44e3fcea2385ef33ae2803531f2fad655efdc2c262e51f92f24f0e74" - }, - { - "kind": "contract", - "mode": "managed", - "source": "contracts/mdbase.comment/1.0.0.md", - "target": "_contracts/mdbase.comment/1.0.0.md", - "digest": "sha256:c85663fbb339d33e8e67825c81fc160fbac00285a1687cbe99187bad7f58878d" - }, - { - "kind": "type", - "mode": "seed", - "source": "types/comment/1.md", - "target": "_types/comment.md", - "digest": "sha256:e8abf287b9d3df0035fd32a2a584d7a8d21eddd7b4a3201fd32a3babe6ac9d9e" - } - ] - }, - "resources": [ - { - "source": "schemas/mdbase.comment/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://mdbase.dev/contracts/schemas/mdbase.comment/1.0.0.schema.json\",\n \"title\": \"Comment\",\n \"description\": \"A comment, reply or suggested edit on a Markdown record, stored as its own record. The comment's Markdown body is its text.\",\n \"type\": \"object\",\n \"required\": [\n \"document\",\n \"created_at\"\n ],\n \"properties\": {\n \"document\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Link to the commented record, such as [[chapters/method]]. Replies repeat their thread's document so one query finds a record's whole discussion.\"\n },\n \"in_reply_to\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Link to the first comment of the thread this comment replies to. Absent on the first comment of a thread.\"\n },\n \"motivation\": {\n \"enum\": [\n \"commenting\",\n \"replying\",\n \"editing\"\n ],\n \"default\": \"commenting\",\n \"description\": \"commenting starts a thread, replying answers one, and editing suggests replacing the target's text.\"\n },\n \"target\": {\n \"type\": \"object\",\n \"description\": \"Where in the document the thread is anchored. Absent means the whole record. Only the first comment of a thread has a target.\",\n \"properties\": {\n \"quote\": {\n \"type\": \"object\",\n \"description\": \"The anchored text and the text around it. The quote is authoritative; positions are a hint.\",\n \"required\": [\n \"exact\"\n ],\n \"properties\": {\n \"exact\": {\n \"type\": \"string\",\n \"description\": \"The anchored text exactly as it appears in the record body. Empty for an insertion point, which prefix or suffix then locates.\"\n },\n \"prefix\": {\n \"type\": \"string\",\n \"description\": \"Text immediately before exact, to tell repeated occurrences apart.\"\n },\n \"suffix\": {\n \"type\": \"string\",\n \"description\": \"Text immediately after exact, to tell repeated occurrences apart.\"\n }\n },\n \"if\": {\n \"required\": [\n \"exact\"\n ],\n \"properties\": {\n \"exact\": {\n \"type\": \"string\",\n \"maxLength\": 0\n }\n }\n },\n \"then\": {\n \"anyOf\": [\n {\n \"required\": [\n \"prefix\"\n ],\n \"properties\": {\n \"prefix\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n }\n },\n {\n \"required\": [\n \"suffix\"\n ],\n \"properties\": {\n \"suffix\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n }\n }\n ]\n },\n \"additionalProperties\": false\n },\n \"text_position\": {\n \"type\": \"object\",\n \"description\": \"Offsets of the quote in one revision of the record body.\",\n \"required\": [\n \"basis\",\n \"unit\",\n \"start\",\n \"end\"\n ],\n \"properties\": {\n \"basis\": {\n \"type\": \"object\",\n \"required\": [\n \"profile\",\n \"hash\"\n ],\n \"properties\": {\n \"profile\": {\n \"const\": \"markdown-body\",\n \"description\": \"Offsets count the record's Markdown body as stored, after the frontmatter, so frontmatter edits never move them.\"\n },\n \"hash\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\",\n \"description\": \"SHA-256 of the UTF-8 body the offsets were measured in.\"\n }\n },\n \"additionalProperties\": false\n },\n \"unit\": {\n \"const\": \"unicode_code_point\"\n },\n \"start\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"end\": {\n \"type\": \"integer\",\n \"minimum\": 0\n }\n },\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"quote\"\n ],\n \"additionalProperties\": false\n },\n \"suggestion\": {\n \"type\": \"object\",\n \"description\": \"The suggested edit of an editing comment: replace the target's quote with replacement.\",\n \"required\": [\n \"replacement\"\n ],\n \"properties\": {\n \"replacement\": {\n \"type\": \"string\",\n \"description\": \"The text to put in place of the quote. Empty suggests deleting it.\"\n },\n \"outcome\": {\n \"enum\": [\n \"accepted\",\n \"rejected\"\n ],\n \"description\": \"What happened to the suggestion once its thread was resolved.\"\n }\n },\n \"additionalProperties\": false\n },\n \"status\": {\n \"enum\": [\n \"open\",\n \"resolved\"\n ],\n \"default\": \"open\",\n \"description\": \"Whether the thread is still open. Only meaningful on the first comment of a thread.\"\n },\n \"resolved_by\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Link to the mdbase.person record of who resolved the thread.\"\n },\n \"resolved_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"created_by\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Link to the mdbase.person record of the comment's author. Absent when the author has no person record.\"\n },\n \"created_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"modified_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"deleted_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"description\": \"When the comment was withdrawn. The record stays so its thread and replies keep their shape; its body should be emptied.\"\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": {\n \"motivation\": {\n \"const\": \"editing\"\n }\n },\n \"required\": [\n \"motivation\"\n ]\n },\n \"then\": {\n \"required\": [\n \"target\",\n \"suggestion\"\n ],\n \"properties\": {\n \"target\": {\n \"type\": \"object\"\n },\n \"suggestion\": {\n \"type\": \"object\"\n }\n }\n }\n }\n ],\n \"additionalProperties\": false\n}\n" - }, - { - "source": "contracts/mdbase.comment/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.comment\nversion: 1.0.0\nname: Comment\ndescription: Comments, replies and suggested edits anchored to text in Markdown records.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.comment/1.0.0.schema.json\n---\n\n# Comment\n\nA comment is its own record, never markup inside the commented record. The\ncommented record's Markdown stays exactly as its author wrote it, and comments\ncan be queried, linked to and validated like any other record. The comment's\nMarkdown body is its text; a link to a person in that text is a mention.\n\n## Threads\n\nThe first comment of a thread has no `in_reply_to`. It carries the thread's\nanchor (`target`) and state (`status`, `resolved_by`, `resolved_at`). Each reply\nis a separate record whose `in_reply_to` links to that first comment, so two\npeople replying at once write two records and never conflict. Replies repeat\nthe thread's `document`. Order a thread's replies by `created_at`.\n\nRefer to records only with ordinary mdbase links: `document` to the commented\nrecord, `in_reply_to` to the first comment, `created_by` and `resolved_by` to\nrecords implementing `mdbase.person`. Implementing types declare these fields in\n`collection.links` so rename reference updates keep them current. Never refer\nto an author by name, email or account subject.\n\n## Anchors\n\n`target.quote` is the source of truth: `exact` is the anchored text and\n`prefix` and `suffix` are the text around it. `target.text_position` records\nwhere the quote was in one revision of the body, in Unicode code points of the\nrecord's Markdown body as stored, after its frontmatter (profile\n`markdown-body`). `basis.hash` is `sha256:` and the hex SHA-256 of that body's\nUTF-8 bytes.\n\nTo find a thread's text:\n\n1. When the body at the recorded offsets is still `exact`, use them.\n2. Otherwise search the body for `exact`, preferring the occurrence whose\n surrounding text best matches `prefix` and `suffix`, then the one nearest\n the recorded offsets.\n3. When `exact` is not found, the thread is detached. Show it apart from the\n text rather than guessing a place. A detached thread is not an error.\n\nAn empty `exact` is an insertion point between `prefix` and `suffix`. A thread\nwithout a `target` is about the whole record. A consumer may rewrite\n`text_position` after finding the quote elsewhere; it must not change `quote`.\n\n## Suggested edits\n\nA comment with `motivation: editing` suggests replacing the target's quote with\n`suggestion.replacement`; an empty replacement suggests deleting it. Accepting\na suggestion first finds the quote as above and must refuse, leaving the\nthread open, when the quote cannot be found exactly. It then replaces the\nquote in the commented record and resolves the thread with\n`suggestion.outcome: accepted`. Rejecting resolves it with `rejected`.\n\n## Lifecycle\n\nA comment whose `document` no longer resolves is kept, not deleted: records\ncan be restored, and the discussion is still collection data. Consumers may\nhide such comments. Withdrawing a comment sets `deleted_at` and empties its\nbody rather than deleting the record, so replies to it keep their thread.\n\nAuthorship links are editable collection data with the same trust as any other\nfield. They never prove who wrote a comment or grant anyone access.\n" - }, - { - "source": "types/comment/1.md", - "document": "---\nkind: mdbase.type\nname: comment\nversion: 1\ndescription: A comment, reply or suggested edit on another note, anchored to a passage of its text.\nmatch:\n where:\n type: comment\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: Comment\n description: A comment, reply or suggested edit on a Markdown record, stored as its own record. The comment's Markdown body is its text.\n type: object\n required:\n - type\n - document\n - created_at\n properties:\n type:\n const: comment\n description: Identifies this note as a Comment. Set by the application that creates it.\n document:\n type: string\n pattern: \\S\n description: Link to the commented record, such as [[chapters/method]]. Replies repeat their thread's document so one query finds a record's whole discussion.\n in_reply_to:\n type: string\n pattern: \\S\n description: Link to the first comment of the thread this comment replies to. Absent on the first comment of a thread.\n motivation:\n enum:\n - commenting\n - replying\n - editing\n default: commenting\n description: commenting starts a thread, replying answers one, and editing suggests replacing the target's text.\n target:\n type: object\n description: Where in the document the thread is anchored. Absent means the whole record. Only the first comment of a thread has a target.\n properties:\n quote:\n type: object\n description: The anchored text and the text around it. The quote is authoritative; positions are a hint.\n required:\n - exact\n properties:\n exact:\n type: string\n description: The anchored text exactly as it appears in the record body. Empty for an insertion point, which prefix or suffix then locates.\n prefix:\n type: string\n description: Text immediately before exact, to tell repeated occurrences apart.\n suffix:\n type: string\n description: Text immediately after exact, to tell repeated occurrences apart.\n if:\n required:\n - exact\n properties:\n exact:\n type: string\n maxLength: 0\n then:\n anyOf:\n - required:\n - prefix\n properties:\n prefix:\n type: string\n minLength: 1\n - required:\n - suffix\n properties:\n suffix:\n type: string\n minLength: 1\n additionalProperties: false\n text_position:\n type: object\n description: Offsets of the quote in one revision of the record body.\n required:\n - basis\n - unit\n - start\n - end\n properties:\n basis:\n type: object\n required:\n - profile\n - hash\n properties:\n profile:\n const: markdown-body\n description: Offsets count the record's Markdown body as stored, after the frontmatter, so frontmatter edits never move them.\n hash:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n description: SHA-256 of the UTF-8 body the offsets were measured in.\n additionalProperties: false\n unit:\n const: unicode_code_point\n start:\n type: integer\n minimum: 0\n end:\n type: integer\n minimum: 0\n additionalProperties: false\n required:\n - quote\n additionalProperties: false\n suggestion:\n type: object\n description: \"The suggested edit of an editing comment: replace the target's quote with replacement.\"\n required:\n - replacement\n properties:\n replacement:\n type: string\n description: The text to put in place of the quote. Empty suggests deleting it.\n outcome:\n enum:\n - accepted\n - rejected\n description: What happened to the suggestion once its thread was resolved.\n additionalProperties: false\n status:\n enum:\n - open\n - resolved\n default: open\n description: Whether the thread is still open. Only meaningful on the first comment of a thread.\n resolved_by:\n type: string\n pattern: \\S\n description: Link to the mdbase.person record of who resolved the thread.\n resolved_at:\n type: string\n format: date-time\n created_by:\n type: string\n pattern: \\S\n description: Link to the mdbase.person record of the comment's author. Absent when the author has no person record.\n created_at:\n type: string\n format: date-time\n modified_at:\n type: string\n format: date-time\n deleted_at:\n type: string\n format: date-time\n description: When the comment was withdrawn. The record stays so its thread and replies keep their shape; its body should be emptied.\n allOf:\n - if:\n properties:\n motivation:\n const: editing\n required:\n - motivation\n then:\n required:\n - target\n - suggestion\n properties:\n target:\n type: object\n suggestion:\n type: object\n additionalProperties: true\ncollection:\n links:\n document:\n target_type: any\n validate_exists: false\n in_reply_to:\n target_type: comment\n validate_exists: false\n created_by:\n target_type: any\n validate_exists: false\n resolved_by:\n target_type: any\n validate_exists: false\n display:\n description_field: document\n icon: chat-circle\nimplements:\n - contract: mdbase.comment\n version: 1.0.0\n fields:\n document: document\n in_reply_to: in_reply_to\n motivation: motivation\n target: target\n suggestion: suggestion\n status: status\n resolved_by: resolved_by\n resolved_at: resolved_at\n created_by: created_by\n created_at: created_at\n modified_at: modified_at\n deleted_at: deleted_at\n---\n\n# Comment\n\nOne note per comment, reply or suggested edit. Apps create these for you; the\ncommented note itself is never changed by commenting on it.\n\n```yaml\ntype: comment\ndocument: \"[[chapters/method]]\"\ntarget:\n quote: { exact: \"suggests strongly\", prefix: \"the evidence \", suffix: \" that\" }\ncreated_by: \"[[Alex Rivera]]\"\ncreated_at: 2026-09-29T10:00:00Z\n```\n\nThe note's body is the comment's text. A reply is another Comment note whose\n`in_reply_to` links to the thread's first comment. A suggested edit has\n`motivation: editing` and a `suggestion.replacement`.\n\n`document`, `in_reply_to`, `created_by` and `resolved_by` are links, so\nrenaming or moving a note with a tool that updates references keeps them\ncurrent. Links to a note that has since been deleted are kept, not treated as\nerrors. `created_by` and `resolved_by` link to Person notes; they are\neditable data, not proof of who wrote a comment.\n\nThis type belongs to your collection once installed. You can add fields, or\nrename fields and update the `implements` mapping; apps read comments through\nthe `mdbase.comment` contract, not through these local names.\n" - } - ], - "provides": [ - { - "id": "mdbase.comment", - "version": "1.0.0", - "digest": "sha256:c2c5b3f3013d10625310401e9f9149ffa2d09c5b7d91b4fc97688d3ac010bec5" - } - ] -} diff --git a/public/contracts/packs/mdbase.comment/1.0.1.json b/public/contracts/packs/mdbase.comment/1.0.1.json deleted file mode 100644 index 606bc5e..0000000 --- a/public/contracts/packs/mdbase.comment/1.0.1.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "manifest": { - "kind": "mdbase.type-pack", - "id": "mdbase.comment", - "version": "1.0.1", - "name": "Comments type pack", - "description": "Comments, replies and suggested edits anchored to text in Markdown records.", - "resources": [ - { - "kind": "schema", - "mode": "managed", - "source": "schemas/mdbase.comment/1.0.0.schema.json", - "target": "schemas/mdbase.comment/1.0.0.schema.json", - "digest": "sha256:b845720a44e3fcea2385ef33ae2803531f2fad655efdc2c262e51f92f24f0e74" - }, - { - "kind": "contract", - "mode": "managed", - "source": "contracts/mdbase.comment/1.0.0.md", - "target": "_contracts/mdbase.comment/1.0.0.md", - "digest": "sha256:c85663fbb339d33e8e67825c81fc160fbac00285a1687cbe99187bad7f58878d" - }, - { - "kind": "type", - "mode": "seed", - "source": "types/comment/2.md", - "target": "_types/comment.md", - "digest": "sha256:a18cb5844d999730e39e9c756a6e0116b1d7d5c3082efe11d33cba3881957b1a", - "upgrade_from": { - "digest": "sha256:e8abf287b9d3df0035fd32a2a584d7a8d21eddd7b4a3201fd32a3babe6ac9d9e", - "document": "---\nkind: mdbase.type\nname: comment\nversion: 1\ndescription: A comment, reply or suggested edit on another note, anchored to a passage of its text.\nmatch:\n where:\n type: comment\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: Comment\n description: A comment, reply or suggested edit on a Markdown record, stored as its own record. The comment's Markdown body is its text.\n type: object\n required:\n - type\n - document\n - created_at\n properties:\n type:\n const: comment\n description: Identifies this note as a Comment. Set by the application that creates it.\n document:\n type: string\n pattern: \\S\n description: Link to the commented record, such as [[chapters/method]]. Replies repeat their thread's document so one query finds a record's whole discussion.\n in_reply_to:\n type: string\n pattern: \\S\n description: Link to the first comment of the thread this comment replies to. Absent on the first comment of a thread.\n motivation:\n enum:\n - commenting\n - replying\n - editing\n default: commenting\n description: commenting starts a thread, replying answers one, and editing suggests replacing the target's text.\n target:\n type: object\n description: Where in the document the thread is anchored. Absent means the whole record. Only the first comment of a thread has a target.\n properties:\n quote:\n type: object\n description: The anchored text and the text around it. The quote is authoritative; positions are a hint.\n required:\n - exact\n properties:\n exact:\n type: string\n description: The anchored text exactly as it appears in the record body. Empty for an insertion point, which prefix or suffix then locates.\n prefix:\n type: string\n description: Text immediately before exact, to tell repeated occurrences apart.\n suffix:\n type: string\n description: Text immediately after exact, to tell repeated occurrences apart.\n if:\n required:\n - exact\n properties:\n exact:\n type: string\n maxLength: 0\n then:\n anyOf:\n - required:\n - prefix\n properties:\n prefix:\n type: string\n minLength: 1\n - required:\n - suffix\n properties:\n suffix:\n type: string\n minLength: 1\n additionalProperties: false\n text_position:\n type: object\n description: Offsets of the quote in one revision of the record body.\n required:\n - basis\n - unit\n - start\n - end\n properties:\n basis:\n type: object\n required:\n - profile\n - hash\n properties:\n profile:\n const: markdown-body\n description: Offsets count the record's Markdown body as stored, after the frontmatter, so frontmatter edits never move them.\n hash:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n description: SHA-256 of the UTF-8 body the offsets were measured in.\n additionalProperties: false\n unit:\n const: unicode_code_point\n start:\n type: integer\n minimum: 0\n end:\n type: integer\n minimum: 0\n additionalProperties: false\n required:\n - quote\n additionalProperties: false\n suggestion:\n type: object\n description: \"The suggested edit of an editing comment: replace the target's quote with replacement.\"\n required:\n - replacement\n properties:\n replacement:\n type: string\n description: The text to put in place of the quote. Empty suggests deleting it.\n outcome:\n enum:\n - accepted\n - rejected\n description: What happened to the suggestion once its thread was resolved.\n additionalProperties: false\n status:\n enum:\n - open\n - resolved\n default: open\n description: Whether the thread is still open. Only meaningful on the first comment of a thread.\n resolved_by:\n type: string\n pattern: \\S\n description: Link to the mdbase.person record of who resolved the thread.\n resolved_at:\n type: string\n format: date-time\n created_by:\n type: string\n pattern: \\S\n description: Link to the mdbase.person record of the comment's author. Absent when the author has no person record.\n created_at:\n type: string\n format: date-time\n modified_at:\n type: string\n format: date-time\n deleted_at:\n type: string\n format: date-time\n description: When the comment was withdrawn. The record stays so its thread and replies keep their shape; its body should be emptied.\n allOf:\n - if:\n properties:\n motivation:\n const: editing\n required:\n - motivation\n then:\n required:\n - target\n - suggestion\n properties:\n target:\n type: object\n suggestion:\n type: object\n additionalProperties: true\ncollection:\n links:\n document:\n target_type: any\n validate_exists: false\n in_reply_to:\n target_type: comment\n validate_exists: false\n created_by:\n target_type: any\n validate_exists: false\n resolved_by:\n target_type: any\n validate_exists: false\n display:\n description_field: document\n icon: chat-circle\nimplements:\n - contract: mdbase.comment\n version: 1.0.0\n fields:\n document: document\n in_reply_to: in_reply_to\n motivation: motivation\n target: target\n suggestion: suggestion\n status: status\n resolved_by: resolved_by\n resolved_at: resolved_at\n created_by: created_by\n created_at: created_at\n modified_at: modified_at\n deleted_at: deleted_at\n---\n\n# Comment\n\nOne note per comment, reply or suggested edit. Apps create these for you; the\ncommented note itself is never changed by commenting on it.\n\n```yaml\ntype: comment\ndocument: \"[[chapters/method]]\"\ntarget:\n quote: { exact: \"suggests strongly\", prefix: \"the evidence \", suffix: \" that\" }\ncreated_by: \"[[Alex Rivera]]\"\ncreated_at: 2026-09-29T10:00:00Z\n```\n\nThe note's body is the comment's text. A reply is another Comment note whose\n`in_reply_to` links to the thread's first comment. A suggested edit has\n`motivation: editing` and a `suggestion.replacement`.\n\n`document`, `in_reply_to`, `created_by` and `resolved_by` are links, so\nrenaming or moving a note with a tool that updates references keeps them\ncurrent. Links to a note that has since been deleted are kept, not treated as\nerrors. `created_by` and `resolved_by` link to Person notes; they are\neditable data, not proof of who wrote a comment.\n\nThis type belongs to your collection once installed. You can add fields, or\nrename fields and update the `implements` mapping; apps read comments through\nthe `mdbase.comment` contract, not through these local names.\n" - } - } - ] - }, - "resources": [ - { - "source": "schemas/mdbase.comment/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://mdbase.dev/contracts/schemas/mdbase.comment/1.0.0.schema.json\",\n \"title\": \"Comment\",\n \"description\": \"A comment, reply or suggested edit on a Markdown record, stored as its own record. The comment's Markdown body is its text.\",\n \"type\": \"object\",\n \"required\": [\n \"document\",\n \"created_at\"\n ],\n \"properties\": {\n \"document\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Link to the commented record, such as [[chapters/method]]. Replies repeat their thread's document so one query finds a record's whole discussion.\"\n },\n \"in_reply_to\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Link to the first comment of the thread this comment replies to. Absent on the first comment of a thread.\"\n },\n \"motivation\": {\n \"enum\": [\n \"commenting\",\n \"replying\",\n \"editing\"\n ],\n \"default\": \"commenting\",\n \"description\": \"commenting starts a thread, replying answers one, and editing suggests replacing the target's text.\"\n },\n \"target\": {\n \"type\": \"object\",\n \"description\": \"Where in the document the thread is anchored. Absent means the whole record. Only the first comment of a thread has a target.\",\n \"properties\": {\n \"quote\": {\n \"type\": \"object\",\n \"description\": \"The anchored text and the text around it. The quote is authoritative; positions are a hint.\",\n \"required\": [\n \"exact\"\n ],\n \"properties\": {\n \"exact\": {\n \"type\": \"string\",\n \"description\": \"The anchored text exactly as it appears in the record body. Empty for an insertion point, which prefix or suffix then locates.\"\n },\n \"prefix\": {\n \"type\": \"string\",\n \"description\": \"Text immediately before exact, to tell repeated occurrences apart.\"\n },\n \"suffix\": {\n \"type\": \"string\",\n \"description\": \"Text immediately after exact, to tell repeated occurrences apart.\"\n }\n },\n \"if\": {\n \"required\": [\n \"exact\"\n ],\n \"properties\": {\n \"exact\": {\n \"type\": \"string\",\n \"maxLength\": 0\n }\n }\n },\n \"then\": {\n \"anyOf\": [\n {\n \"required\": [\n \"prefix\"\n ],\n \"properties\": {\n \"prefix\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n }\n },\n {\n \"required\": [\n \"suffix\"\n ],\n \"properties\": {\n \"suffix\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n }\n }\n ]\n },\n \"additionalProperties\": false\n },\n \"text_position\": {\n \"type\": \"object\",\n \"description\": \"Offsets of the quote in one revision of the record body.\",\n \"required\": [\n \"basis\",\n \"unit\",\n \"start\",\n \"end\"\n ],\n \"properties\": {\n \"basis\": {\n \"type\": \"object\",\n \"required\": [\n \"profile\",\n \"hash\"\n ],\n \"properties\": {\n \"profile\": {\n \"const\": \"markdown-body\",\n \"description\": \"Offsets count the record's Markdown body as stored, after the frontmatter, so frontmatter edits never move them.\"\n },\n \"hash\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\",\n \"description\": \"SHA-256 of the UTF-8 body the offsets were measured in.\"\n }\n },\n \"additionalProperties\": false\n },\n \"unit\": {\n \"const\": \"unicode_code_point\"\n },\n \"start\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"end\": {\n \"type\": \"integer\",\n \"minimum\": 0\n }\n },\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"quote\"\n ],\n \"additionalProperties\": false\n },\n \"suggestion\": {\n \"type\": \"object\",\n \"description\": \"The suggested edit of an editing comment: replace the target's quote with replacement.\",\n \"required\": [\n \"replacement\"\n ],\n \"properties\": {\n \"replacement\": {\n \"type\": \"string\",\n \"description\": \"The text to put in place of the quote. Empty suggests deleting it.\"\n },\n \"outcome\": {\n \"enum\": [\n \"accepted\",\n \"rejected\"\n ],\n \"description\": \"What happened to the suggestion once its thread was resolved.\"\n }\n },\n \"additionalProperties\": false\n },\n \"status\": {\n \"enum\": [\n \"open\",\n \"resolved\"\n ],\n \"default\": \"open\",\n \"description\": \"Whether the thread is still open. Only meaningful on the first comment of a thread.\"\n },\n \"resolved_by\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Link to the mdbase.person record of who resolved the thread.\"\n },\n \"resolved_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"created_by\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Link to the mdbase.person record of the comment's author. Absent when the author has no person record.\"\n },\n \"created_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"modified_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"deleted_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"description\": \"When the comment was withdrawn. The record stays so its thread and replies keep their shape; its body should be emptied.\"\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": {\n \"motivation\": {\n \"const\": \"editing\"\n }\n },\n \"required\": [\n \"motivation\"\n ]\n },\n \"then\": {\n \"required\": [\n \"target\",\n \"suggestion\"\n ],\n \"properties\": {\n \"target\": {\n \"type\": \"object\"\n },\n \"suggestion\": {\n \"type\": \"object\"\n }\n }\n }\n }\n ],\n \"additionalProperties\": false\n}\n" - }, - { - "source": "contracts/mdbase.comment/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.comment\nversion: 1.0.0\nname: Comment\ndescription: Comments, replies and suggested edits anchored to text in Markdown records.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.comment/1.0.0.schema.json\n---\n\n# Comment\n\nA comment is its own record, never markup inside the commented record. The\ncommented record's Markdown stays exactly as its author wrote it, and comments\ncan be queried, linked to and validated like any other record. The comment's\nMarkdown body is its text; a link to a person in that text is a mention.\n\n## Threads\n\nThe first comment of a thread has no `in_reply_to`. It carries the thread's\nanchor (`target`) and state (`status`, `resolved_by`, `resolved_at`). Each reply\nis a separate record whose `in_reply_to` links to that first comment, so two\npeople replying at once write two records and never conflict. Replies repeat\nthe thread's `document`. Order a thread's replies by `created_at`.\n\nRefer to records only with ordinary mdbase links: `document` to the commented\nrecord, `in_reply_to` to the first comment, `created_by` and `resolved_by` to\nrecords implementing `mdbase.person`. Implementing types declare these fields in\n`collection.links` so rename reference updates keep them current. Never refer\nto an author by name, email or account subject.\n\n## Anchors\n\n`target.quote` is the source of truth: `exact` is the anchored text and\n`prefix` and `suffix` are the text around it. `target.text_position` records\nwhere the quote was in one revision of the body, in Unicode code points of the\nrecord's Markdown body as stored, after its frontmatter (profile\n`markdown-body`). `basis.hash` is `sha256:` and the hex SHA-256 of that body's\nUTF-8 bytes.\n\nTo find a thread's text:\n\n1. When the body at the recorded offsets is still `exact`, use them.\n2. Otherwise search the body for `exact`, preferring the occurrence whose\n surrounding text best matches `prefix` and `suffix`, then the one nearest\n the recorded offsets.\n3. When `exact` is not found, the thread is detached. Show it apart from the\n text rather than guessing a place. A detached thread is not an error.\n\nAn empty `exact` is an insertion point between `prefix` and `suffix`. A thread\nwithout a `target` is about the whole record. A consumer may rewrite\n`text_position` after finding the quote elsewhere; it must not change `quote`.\n\n## Suggested edits\n\nA comment with `motivation: editing` suggests replacing the target's quote with\n`suggestion.replacement`; an empty replacement suggests deleting it. Accepting\na suggestion first finds the quote as above and must refuse, leaving the\nthread open, when the quote cannot be found exactly. It then replaces the\nquote in the commented record and resolves the thread with\n`suggestion.outcome: accepted`. Rejecting resolves it with `rejected`.\n\n## Lifecycle\n\nA comment whose `document` no longer resolves is kept, not deleted: records\ncan be restored, and the discussion is still collection data. Consumers may\nhide such comments. Withdrawing a comment sets `deleted_at` and empties its\nbody rather than deleting the record, so replies to it keep their thread.\n\nAuthorship links are editable collection data with the same trust as any other\nfield. They never prove who wrote a comment or grant anyone access.\n" - }, - { - "source": "types/comment/2.md", - "document": "---\nkind: mdbase.type\nname: comment\nversion: 2\ndescription: A comment, reply or suggested edit on another note, anchored to a passage of its text.\nmatch:\n where:\n type: comment\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: Comment\n description: A comment, reply or suggested edit on a Markdown record, stored as its own record. The comment's Markdown body is its text.\n type: object\n required:\n - document\n - created_at\n properties:\n document:\n type: string\n pattern: \\S\n description: Link to the commented record, such as [[chapters/method]]. Replies repeat their thread's document so one query finds a record's whole discussion.\n in_reply_to:\n type: string\n pattern: \\S\n description: Link to the first comment of the thread this comment replies to. Absent on the first comment of a thread.\n motivation:\n enum:\n - commenting\n - replying\n - editing\n default: commenting\n description: commenting starts a thread, replying answers one, and editing suggests replacing the target's text.\n target:\n type: object\n description: Where in the document the thread is anchored. Absent means the whole record. Only the first comment of a thread has a target.\n properties:\n quote:\n type: object\n description: The anchored text and the text around it. The quote is authoritative; positions are a hint.\n required:\n - exact\n properties:\n exact:\n type: string\n description: The anchored text exactly as it appears in the record body. Empty for an insertion point, which prefix or suffix then locates.\n prefix:\n type: string\n description: Text immediately before exact, to tell repeated occurrences apart.\n suffix:\n type: string\n description: Text immediately after exact, to tell repeated occurrences apart.\n if:\n required:\n - exact\n properties:\n exact:\n type: string\n maxLength: 0\n then:\n anyOf:\n - required:\n - prefix\n properties:\n prefix:\n type: string\n minLength: 1\n - required:\n - suffix\n properties:\n suffix:\n type: string\n minLength: 1\n additionalProperties: false\n text_position:\n type: object\n description: Offsets of the quote in one revision of the record body.\n required:\n - basis\n - unit\n - start\n - end\n properties:\n basis:\n type: object\n required:\n - profile\n - hash\n properties:\n profile:\n const: markdown-body\n description: Offsets count the record's Markdown body as stored, after the frontmatter, so frontmatter edits never move them.\n hash:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n description: SHA-256 of the UTF-8 body the offsets were measured in.\n additionalProperties: false\n unit:\n const: unicode_code_point\n start:\n type: integer\n minimum: 0\n end:\n type: integer\n minimum: 0\n additionalProperties: false\n required:\n - quote\n additionalProperties: false\n suggestion:\n type: object\n description: \"The suggested edit of an editing comment: replace the target's quote with replacement.\"\n required:\n - replacement\n properties:\n replacement:\n type: string\n description: The text to put in place of the quote. Empty suggests deleting it.\n outcome:\n enum:\n - accepted\n - rejected\n description: What happened to the suggestion once its thread was resolved.\n additionalProperties: false\n status:\n enum:\n - open\n - resolved\n default: open\n description: Whether the thread is still open. Only meaningful on the first comment of a thread.\n resolved_by:\n type: string\n pattern: \\S\n description: Link to the mdbase.person record of who resolved the thread.\n resolved_at:\n type: string\n format: date-time\n created_by:\n type: string\n pattern: \\S\n description: Link to the mdbase.person record of the comment's author. Absent when the author has no person record.\n created_at:\n type: string\n format: date-time\n modified_at:\n type: string\n format: date-time\n deleted_at:\n type: string\n format: date-time\n description: When the comment was withdrawn. The record stays so its thread and replies keep their shape; its body should be emptied.\n allOf:\n - if:\n properties:\n motivation:\n const: editing\n required:\n - motivation\n then:\n required:\n - target\n - suggestion\n properties:\n target:\n type: object\n suggestion:\n type: object\n additionalProperties: true\ncollection:\n links:\n document:\n target_type: any\n validate_exists: false\n in_reply_to:\n target_type: comment\n validate_exists: false\n created_by:\n target_type: any\n validate_exists: false\n resolved_by:\n target_type: any\n validate_exists: false\n display:\n description_field: document\n icon: chat-circle\nimplements:\n - contract: mdbase.comment\n version: 1.0.0\n fields:\n document: document\n in_reply_to: in_reply_to\n motivation: motivation\n target: target\n suggestion: suggestion\n status: status\n resolved_by: resolved_by\n resolved_at: resolved_at\n created_by: created_by\n created_at: created_at\n modified_at: modified_at\n deleted_at: deleted_at\n---\n\n# Comment\n\nOne note per comment, reply or suggested edit. Apps create these for you; the\ncommented note itself is never changed by commenting on it.\n\n```yaml\ntype: comment\ndocument: \"[[chapters/method]]\"\ntarget:\n quote: { exact: \"suggests strongly\", prefix: \"the evidence \", suffix: \" that\" }\ncreated_by: \"[[Alex Rivera]]\"\ncreated_at: 2026-09-29T10:00:00Z\n```\n\nThe note's body is the comment's text. A reply is another Comment note whose\n`in_reply_to` links to the thread's first comment. A suggested edit has\n`motivation: editing` and a `suggestion.replacement`.\n\n`document`, `in_reply_to`, `created_by` and `resolved_by` are links, so\nrenaming or moving a note with a tool that updates references keeps them\ncurrent. Links to a note that has since been deleted are kept, not treated as\nerrors. `created_by` and `resolved_by` link to Person notes; they are\neditable data, not proof of who wrote a comment.\n\nThis type belongs to your collection once installed. You can add fields, or\nrename fields and update the `implements` mapping; apps read comments through\nthe `mdbase.comment` contract, not through these local names.\n" - } - ], - "provides": [ - { - "id": "mdbase.comment", - "version": "1.0.0", - "digest": "sha256:c2c5b3f3013d10625310401e9f9149ffa2d09c5b7d91b4fc97688d3ac010bec5" - } - ] -} diff --git a/public/contracts/packs/mdbase.contact/1.0.0.json b/public/contracts/packs/mdbase.contact/1.0.0.json deleted file mode 100644 index 2067d14..0000000 --- a/public/contracts/packs/mdbase.contact/1.0.0.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "manifest": { - "kind": "mdbase.type-pack", - "id": "mdbase.contact", - "version": "1.0.0", - "name": "Contact type pack", - "description": "A compact contact contract and a friendly, editable Contact type.", - "resources": [ - { - "kind": "schema", - "source": "schemas/mdbase.contact/1.0.0.schema.json", - "target": "schemas/mdbase.contact/1.0.0.schema.json", - "digest": "sha256:bd8a011d18c71164b633f4e82cb33faa5b658cdba4f89312a34c13bf46a350d2" - }, - { - "kind": "contract", - "source": "contracts/mdbase.contact/1.0.0.md", - "target": "_contracts/mdbase.contact/1.0.0.md", - "digest": "sha256:e3634a35737ada5eb62e3e15f1c0c9d2e27c55a3f98dfab94bbc14c40404903d" - }, - { - "kind": "type", - "source": "types/contact/2.md", - "target": "_types/contact.md", - "digest": "sha256:c925ac22674b5fa9b1a7b8b3af827e5ce3ba15e423b64487f626f5ab4cc1c80a" - } - ] - }, - "resources": [ - { - "source": "schemas/mdbase.contact/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://mdbase.dev/contracts/schemas/mdbase.contact/1.0.0.schema.json\",\n \"title\": \"Contact\",\n \"description\": \"A compact application-facing contact view.\",\n \"type\": \"object\",\n \"required\": [\"name\"],\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"The name applications should use when presenting this contact.\"\n },\n \"kind\": {\n \"type\": \"string\",\n \"enum\": [\"individual\", \"organisation\", \"group\"],\n \"description\": \"The broad kind of contact when the collection distinguishes it.\"\n },\n \"primary_email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"description\": \"The preferred email address for this contact.\"\n },\n \"primary_phone\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"The preferred telephone number for this contact.\"\n },\n \"organisation\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"The organisation most closely associated with this contact.\"\n },\n \"birthday\": {\n \"type\": \"string\",\n \"format\": \"date\",\n \"description\": \"The contact's birthday when known.\"\n }\n },\n \"additionalProperties\": false\n}\n" - }, - { - "source": "contracts/mdbase.contact/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.contact\nversion: 1.0.0\nname: Contact\ndescription: A compact application-facing view of a person or organisation.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.contact/1.0.0.schema.json\n---\n\n# Contact\n\nThis contract exposes the small set of contact semantics commonly shared by\naddress books, relationship tools, and other applications. A collection keeps\nits own field names and may store richer local data; the implementing type maps\nonly the fields it wants applications to see.\n\nThe contract is deliberately not an interchange format. Exporters can convert\nthis view to JSContact, vCard, or another wire representation without requiring\nMarkdown records to store that representation directly.\n" - }, - { - "source": "types/contact/2.md", - "document": "---\nkind: mdbase.type\nname: contact\nversion: 1\ndescription: A person or organisation you want to stay in touch with\nmatch:\n where:\n type: contact\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: Contact\n description: A friendly local contact with room for collection-specific fields.\n type: object\n required:\n - type\n - name\n properties:\n type:\n const: contact\n name:\n type: string\n minLength: 1\n description: The name shown in contact lists.\n kind:\n type: string\n enum:\n - individual\n - organisation\n - group\n default: individual\n description: The broad kind of contact.\n email:\n type: string\n format: email\n description: The preferred email address.\n phone:\n type: string\n minLength: 1\n description: The preferred telephone number.\n organisation:\n type: string\n minLength: 1\n description: The contact's main organisation.\n birthday:\n type: string\n format: date\n description: The contact's birthday.\n additionalProperties: true\ncollection:\n display:\n name_field: name\n description_field: organisation\n icon: address-book\nimplements:\n - contract: mdbase.contact\n version: 1.0.0\n fields:\n name: name\n kind: kind\n primary_email: email\n primary_phone: phone\n organisation: organisation\n birthday: birthday\n---\n\n# Contact\n\nContact notes use familiar frontmatter fields and leave the Markdown body free\nfor history, context, and anything else worth remembering. Applications using\nthe `mdbase.contact` contract see only the mapped contact fields.\n\nYou can rename or extend the local fields in mdbase-editor. Keep the contract\nmapping aligned so other contact-aware applications continue to understand\nthe type.\n" - } - ], - "provides": [ - { - "id": "mdbase.contact", - "version": "1.0.0", - "digest": "sha256:49cfe15403dfc741a693e89a2f4d2857de306f391d02cb03e67bfaf0aa1d6b0d" - } - ] -} diff --git a/public/contracts/packs/mdbase.contact/1.1.0.json b/public/contracts/packs/mdbase.contact/1.1.0.json deleted file mode 100644 index 822f636..0000000 --- a/public/contracts/packs/mdbase.contact/1.1.0.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "manifest": { - "kind": "mdbase.type-pack", - "id": "mdbase.contact", - "version": "1.1.0", - "name": "People and contacts type pack", - "description": "Portable people, editable account identity associations, and familiar contact fields.", - "resources": [ - { - "kind": "schema", - "mode": "managed", - "source": "schemas/mdbase.person/1.0.0.schema.json", - "target": "schemas/mdbase.person/1.0.0.schema.json", - "digest": "sha256:3254afaa98c895e84fdc0aba299e67a0f3b594681c5581313ece5fcf4e2c6d93" - }, - { - "kind": "contract", - "mode": "managed", - "source": "contracts/mdbase.person/1.0.0.md", - "target": "_contracts/mdbase.person/1.0.0.md", - "digest": "sha256:e2a9435ad01a2c06c151bf6af62a9d04aa30faa8e6128e4b5fe39378c767465c" - }, - { - "kind": "schema", - "mode": "managed", - "source": "schemas/mdbase.contact/1.0.0.schema.json", - "target": "schemas/mdbase.contact/1.0.0.schema.json", - "digest": "sha256:bd8a011d18c71164b633f4e82cb33faa5b658cdba4f89312a34c13bf46a350d2" - }, - { - "kind": "contract", - "mode": "managed", - "source": "contracts/mdbase.contact/1.0.0.md", - "target": "_contracts/mdbase.contact/1.0.0.md", - "digest": "sha256:e3634a35737ada5eb62e3e15f1c0c9d2e27c55a3f98dfab94bbc14c40404903d" - }, - { - "kind": "type", - "mode": "seed", - "source": "types/contact/2.md", - "target": "_types/contact.md", - "digest": "sha256:c925ac22674b5fa9b1a7b8b3af827e5ce3ba15e423b64487f626f5ab4cc1c80a" - }, - { - "kind": "type", - "mode": "seed", - "source": "types/person/1.md", - "target": "_types/person.md", - "digest": "sha256:18896ac3086c7fdcb64748babd7dd8263dbece4fcc6bcf43a53f74d51bcece5e" - } - ] - }, - "resources": [ - { - "source": "schemas/mdbase.person/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://mdbase.dev/contracts/schemas/mdbase.person/1.0.0.schema.json\",\n \"title\": \"Person\",\n \"description\": \"A portable person reference with editable account identity associations. Not an authentication or access-control assertion.\",\n \"type\": \"object\",\n \"required\": [\"id\", \"name\"],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Stable person identifier used by references such as task assignments; independent of file path, name, account, and membership.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Collection-owned display name, not a verified account name.\"\n },\n \"identities\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"description\": \"Editable identity associations. Missing or empty means this person has no linked account. Match issuer and subject exactly; never match by email or name.\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\"issuer\", \"subject\"],\n \"properties\": {\n \"issuer\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"pattern\": \"^https?://\",\n \"description\": \"Stable issuer URL supplied by the identity service. Copy exactly; do not derive from a collection authority or relay URL.\"\n },\n \"subject\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Opaque, case-sensitive, account-wide identifier supplied by the issuer. Not an email, membership ID, or credential.\"\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n}\n" - }, - { - "source": "contracts/mdbase.person/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.person\nversion: 1.0.0\nname: Person\ndescription: A portable person reference with editable account identity associations.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.person/1.0.0.schema.json\n---\n\n# Person\n\nA person is collection data, independent of an account or collection membership.\nApplications reference the stable `id`, not a name, file path, email address,\naccount subject, or membership ID. Collections choose their own local type and\nfield names through explicit `implements` mappings.\n\n`name` is a collection-owned display label. `identities` optionally associates\nthis person with one or more accounts through issuer/subject pairs. A person\nwithout a Connect account is valid. The same record can travel between hosted,\nrelay, local, and exported collections without rewriting its identity references.\n\n## Identity matching\n\nAn identity service supplies the authenticated caller's issuer and subject.\nSubjects are opaque, account-wide identifiers, stable across email changes,\ncollection memberships, and removal/rejoining. Different identity issuers may\nuse the same subject; both fields must match exactly. Consumers must not trim,\ncase-fold, resolve redirects, or otherwise normalize either field when matching.\nCopy the issuer value supplied by the service, including its trailing-slash\nconvention. Never derive the issuer from the current collection authority URL.\nHTTP issuers support explicitly configured development and self-hosted instances;\nproduction deployments should use HTTPS.\n\nAn application resolves an identity across all implementing person records:\n\n- No matching person: unlinked, not anonymous authentication and not an error.\n- Exactly one matching record with an unambiguous person ID: linked.\n- Multiple matching records, or multiple records with that person's ID:\n ambiguous. Do not pick the first match, merge records, or overwrite a link.\n\nA partial or failed query cannot establish that a match is unique. Cross-record\nuniqueness is a collection/application invariant, not something this JSON Schema\ncan prove. Consumers must handle ambiguity even if a starter type has a local\nuniqueness constraint: several local types can implement this contract.\n\n## Editable data, not security authority\n\nIdentity associations have exactly the same trust as other editable collection\ndata. Editing one may change an application's \"Assigned to me\" view. It must\nnever change authentication, membership, permissions, authenticated audit\nattribution, or proof of identity to another service. Schema conformance proves\nshape, not that an identity association is truthful.\n\n\"Link this person to me\" is an ordinary record update using the authenticated\ncaller's identity. Never infer a link from a matching email or display name.\nMembership and current account display names come from the identity service,\nnot frontmatter. A person association must never invite someone or grant access.\n\n## Lifecycle and portability\n\nRenaming or moving a record does not change its ID. Removing a member does not\ndelete their person record or task assignments. Deleting a record leaves\nunresolved references; consumers should preserve these rather than silently\nunassigning work. Reusing an ID for a different person changes every reference\nand should not be treated as a routine rename.\n\nCopying records preserves account associations, but never copies collection\naccess. Multiple issuer/subject entries let one person represent accounts at\ndifferent identity services. Account deletion or an issuer migration may leave\nan unresolved identity association; do not automatically rebind it to a newly\ncreated account. Stored names and identity references remain collection data\nsubject to that collection's retention and editing policies.\n\nAccount-wide subjects deliberately allow correlation across collections. This\nis a portability trade-off, not an anonymity guarantee. Never store passwords,\naccess tokens, refresh tokens, or other credentials in these fields.\n\n## Contact information\n\nThis contract does not define another address book. A local type can also\nimplement `mdbase.contact` for compact contact semantics, or\n`mdbase.jscontact.card` when it intentionally stores that interchange shape.\nThe starter Person type implements both Person and Contact.\n" - }, - { - "source": "schemas/mdbase.contact/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://mdbase.dev/contracts/schemas/mdbase.contact/1.0.0.schema.json\",\n \"title\": \"Contact\",\n \"description\": \"A compact application-facing contact view.\",\n \"type\": \"object\",\n \"required\": [\"name\"],\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"The name applications should use when presenting this contact.\"\n },\n \"kind\": {\n \"type\": \"string\",\n \"enum\": [\"individual\", \"organisation\", \"group\"],\n \"description\": \"The broad kind of contact when the collection distinguishes it.\"\n },\n \"primary_email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"description\": \"The preferred email address for this contact.\"\n },\n \"primary_phone\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"The preferred telephone number for this contact.\"\n },\n \"organisation\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"The organisation most closely associated with this contact.\"\n },\n \"birthday\": {\n \"type\": \"string\",\n \"format\": \"date\",\n \"description\": \"The contact's birthday when known.\"\n }\n },\n \"additionalProperties\": false\n}\n" - }, - { - "source": "contracts/mdbase.contact/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.contact\nversion: 1.0.0\nname: Contact\ndescription: A compact application-facing view of a person or organisation.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.contact/1.0.0.schema.json\n---\n\n# Contact\n\nThis contract exposes the small set of contact semantics commonly shared by\naddress books, relationship tools, and other applications. A collection keeps\nits own field names and may store richer local data; the implementing type maps\nonly the fields it wants applications to see.\n\nThe contract is deliberately not an interchange format. Exporters can convert\nthis view to JSContact, vCard, or another wire representation without requiring\nMarkdown records to store that representation directly.\n" - }, - { - "source": "types/contact/2.md", - "document": "---\nkind: mdbase.type\nname: contact\nversion: 1\ndescription: A person or organisation you want to stay in touch with\nmatch:\n where:\n type: contact\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: Contact\n description: A friendly local contact with room for collection-specific fields.\n type: object\n required:\n - type\n - name\n properties:\n type:\n const: contact\n name:\n type: string\n minLength: 1\n description: The name shown in contact lists.\n kind:\n type: string\n enum:\n - individual\n - organisation\n - group\n default: individual\n description: The broad kind of contact.\n email:\n type: string\n format: email\n description: The preferred email address.\n phone:\n type: string\n minLength: 1\n description: The preferred telephone number.\n organisation:\n type: string\n minLength: 1\n description: The contact's main organisation.\n birthday:\n type: string\n format: date\n description: The contact's birthday.\n additionalProperties: true\ncollection:\n display:\n name_field: name\n description_field: organisation\n icon: address-book\nimplements:\n - contract: mdbase.contact\n version: 1.0.0\n fields:\n name: name\n kind: kind\n primary_email: email\n primary_phone: phone\n organisation: organisation\n birthday: birthday\n---\n\n# Contact\n\nContact notes use familiar frontmatter fields and leave the Markdown body free\nfor history, context, and anything else worth remembering. Applications using\nthe `mdbase.contact` contract see only the mapped contact fields.\n\nYou can rename or extend the local fields in mdbase-editor. Keep the contract\nmapping aligned so other contact-aware applications continue to understand\nthe type.\n" - }, - { - "source": "types/person/1.md", - "document": "---\nkind: mdbase.type\nname: person\nversion: 1\ndescription: A portable person with optional account identities and contact information\nmatch:\n where:\n type: person\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: Person\n type: object\n required: [type, id, name]\n properties:\n type:\n const: person\n id:\n type: string\n pattern: '\\S'\n description: Stable person ID; keep this when moving or renaming the note.\n name:\n type: string\n minLength: 1\n pattern: '\\S'\n identities:\n type: array\n uniqueItems: true\n items:\n type: object\n required: [issuer, subject]\n properties:\n issuer:\n type: string\n format: uri\n pattern: '^https?://'\n subject:\n type: string\n pattern: '\\S'\n additionalProperties: false\n kind:\n const: individual\n default: individual\n email:\n type: string\n format: email\n phone:\n type: string\n minLength: 1\n organisation:\n type: string\n minLength: 1\n birthday:\n type: string\n format: date\n additionalProperties: true\ncollection:\n display:\n name_field: name\n description_field: organisation\n icon: user\n unique:\n - field: id\n scope: collection\nimplements:\n - contract: mdbase.person\n version: 1.0.0\n fields:\n id: id\n name: name\n identities: identities\n - contract: mdbase.contact\n version: 1.0.0\n fields:\n name: name\n kind: kind\n primary_email: email\n primary_phone: phone\n organisation: organisation\n birthday: birthday\n---\n\n# Person\n\nCreate a stable ID when adding a person, for example `person_` followed by a\nrandom UUID. Keep it when copying the note to another collection or renaming\nits file. Apps use this ID for assignments and other person references.\n\n```yaml\ntype: person\nid: person_2c1343ec-cac1-4d58-98c9-41736f4de7db\nname: Callum\nidentities:\n - issuer: https://connect.example\n subject: usr_789\n```\n\nUse the actual issuer and subject supplied by Connect, not the example values.\nOmit `identities` for people without accounts. Email is contact information,\nnot a way to establish an identity association. Linking a person does not\ninvite them or grant access to this collection.\n\nIdentity associations and contact labels are ordinary editable data. They are\nnot proof of authentication. Avoid duplicate person IDs or identity pairs\nacross person notes; applications must report ambiguity rather than guess.\n\nThe inline schema belongs to the collection. Add local fields or rename them\nand update the explicit contract mappings without editing published contracts.\n" - } - ], - "provides": [ - { - "id": "mdbase.person", - "version": "1.0.0", - "digest": "sha256:cda32ead27eaf70440efe3fadd8b5334df9af82f378b2af1bc786f7ab0bd0fc3" - }, - { - "id": "mdbase.contact", - "version": "1.0.0", - "digest": "sha256:49cfe15403dfc741a693e89a2f4d2857de306f391d02cb03e67bfaf0aa1d6b0d" - } - ] -} diff --git a/public/contracts/packs/mdbase.contact/1.2.0.json b/public/contracts/packs/mdbase.contact/1.2.0.json deleted file mode 100644 index 06214b7..0000000 --- a/public/contracts/packs/mdbase.contact/1.2.0.json +++ /dev/null @@ -1,102 +0,0 @@ -{ - "manifest": { - "kind": "mdbase.type-pack", - "id": "mdbase.contact", - "version": "1.2.0", - "name": "People type pack", - "description": "Portable people, editable account identity associations, and familiar contact fields.", - "resources": [ - { - "kind": "schema", - "mode": "managed", - "source": "schemas/mdbase.person/1.0.0.schema.json", - "target": "schemas/mdbase.person/1.0.0.schema.json", - "digest": "sha256:3254afaa98c895e84fdc0aba299e67a0f3b594681c5581313ece5fcf4e2c6d93" - }, - { - "kind": "contract", - "mode": "managed", - "source": "contracts/mdbase.person/1.0.0.md", - "target": "_contracts/mdbase.person/1.0.0.md", - "digest": "sha256:e2a9435ad01a2c06c151bf6af62a9d04aa30faa8e6128e4b5fe39378c767465c" - }, - { - "kind": "schema", - "mode": "managed", - "source": "schemas/mdbase.person/2.0.0.schema.json", - "target": "schemas/mdbase.person/2.0.0.schema.json", - "digest": "sha256:f9705e5869a2814086b907323749f63dce60de535728d6725601f02901ae60ac" - }, - { - "kind": "contract", - "mode": "managed", - "source": "contracts/mdbase.person/2.0.0.md", - "target": "_contracts/mdbase.person/2.0.0.md", - "digest": "sha256:2899b149b1602bd4e51ff8e87c82dc92da3f690f4e89b1a6caf5b2b555540fe5" - }, - { - "kind": "schema", - "mode": "managed", - "source": "schemas/mdbase.contact/1.0.0.schema.json", - "target": "schemas/mdbase.contact/1.0.0.schema.json", - "digest": "sha256:bd8a011d18c71164b633f4e82cb33faa5b658cdba4f89312a34c13bf46a350d2" - }, - { - "kind": "contract", - "mode": "managed", - "source": "contracts/mdbase.contact/1.0.0.md", - "target": "_contracts/mdbase.contact/1.0.0.md", - "digest": "sha256:e3634a35737ada5eb62e3e15f1c0c9d2e27c55a3f98dfab94bbc14c40404903d" - }, - { - "kind": "type", - "mode": "seed", - "source": "types/person/2.md", - "target": "_types/person.md", - "digest": "sha256:aa81c2964285ecc69fcb96bca4b6ae80bbddeb648908d840d7c7be50df15b362" - } - ] - }, - "resources": [ - { - "source": "schemas/mdbase.person/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://mdbase.dev/contracts/schemas/mdbase.person/1.0.0.schema.json\",\n \"title\": \"Person\",\n \"description\": \"A portable person reference with editable account identity associations. Not an authentication or access-control assertion.\",\n \"type\": \"object\",\n \"required\": [\"id\", \"name\"],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Stable person identifier used by references such as task assignments; independent of file path, name, account, and membership.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Collection-owned display name, not a verified account name.\"\n },\n \"identities\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"description\": \"Editable identity associations. Missing or empty means this person has no linked account. Match issuer and subject exactly; never match by email or name.\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\"issuer\", \"subject\"],\n \"properties\": {\n \"issuer\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"pattern\": \"^https?://\",\n \"description\": \"Stable issuer URL supplied by the identity service. Copy exactly; do not derive from a collection authority or relay URL.\"\n },\n \"subject\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Opaque, case-sensitive, account-wide identifier supplied by the issuer. Not an email, membership ID, or credential.\"\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n}\n" - }, - { - "source": "contracts/mdbase.person/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.person\nversion: 1.0.0\nname: Person\ndescription: A portable person reference with editable account identity associations.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.person/1.0.0.schema.json\n---\n\n# Person\n\nA person is collection data, independent of an account or collection membership.\nApplications reference the stable `id`, not a name, file path, email address,\naccount subject, or membership ID. Collections choose their own local type and\nfield names through explicit `implements` mappings.\n\n`name` is a collection-owned display label. `identities` optionally associates\nthis person with one or more accounts through issuer/subject pairs. A person\nwithout a Connect account is valid. The same record can travel between hosted,\nrelay, local, and exported collections without rewriting its identity references.\n\n## Identity matching\n\nAn identity service supplies the authenticated caller's issuer and subject.\nSubjects are opaque, account-wide identifiers, stable across email changes,\ncollection memberships, and removal/rejoining. Different identity issuers may\nuse the same subject; both fields must match exactly. Consumers must not trim,\ncase-fold, resolve redirects, or otherwise normalize either field when matching.\nCopy the issuer value supplied by the service, including its trailing-slash\nconvention. Never derive the issuer from the current collection authority URL.\nHTTP issuers support explicitly configured development and self-hosted instances;\nproduction deployments should use HTTPS.\n\nAn application resolves an identity across all implementing person records:\n\n- No matching person: unlinked, not anonymous authentication and not an error.\n- Exactly one matching record with an unambiguous person ID: linked.\n- Multiple matching records, or multiple records with that person's ID:\n ambiguous. Do not pick the first match, merge records, or overwrite a link.\n\nA partial or failed query cannot establish that a match is unique. Cross-record\nuniqueness is a collection/application invariant, not something this JSON Schema\ncan prove. Consumers must handle ambiguity even if a starter type has a local\nuniqueness constraint: several local types can implement this contract.\n\n## Editable data, not security authority\n\nIdentity associations have exactly the same trust as other editable collection\ndata. Editing one may change an application's \"Assigned to me\" view. It must\nnever change authentication, membership, permissions, authenticated audit\nattribution, or proof of identity to another service. Schema conformance proves\nshape, not that an identity association is truthful.\n\n\"Link this person to me\" is an ordinary record update using the authenticated\ncaller's identity. Never infer a link from a matching email or display name.\nMembership and current account display names come from the identity service,\nnot frontmatter. A person association must never invite someone or grant access.\n\n## Lifecycle and portability\n\nRenaming or moving a record does not change its ID. Removing a member does not\ndelete their person record or task assignments. Deleting a record leaves\nunresolved references; consumers should preserve these rather than silently\nunassigning work. Reusing an ID for a different person changes every reference\nand should not be treated as a routine rename.\n\nCopying records preserves account associations, but never copies collection\naccess. Multiple issuer/subject entries let one person represent accounts at\ndifferent identity services. Account deletion or an issuer migration may leave\nan unresolved identity association; do not automatically rebind it to a newly\ncreated account. Stored names and identity references remain collection data\nsubject to that collection's retention and editing policies.\n\nAccount-wide subjects deliberately allow correlation across collections. This\nis a portability trade-off, not an anonymity guarantee. Never store passwords,\naccess tokens, refresh tokens, or other credentials in these fields.\n\n## Contact information\n\nThis contract does not define another address book. A local type can also\nimplement `mdbase.contact` for compact contact semantics, or\n`mdbase.jscontact.card` when it intentionally stores that interchange shape.\nThe starter Person type implements both Person and Contact.\n" - }, - { - "source": "schemas/mdbase.person/2.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://mdbase.dev/contracts/schemas/mdbase.person/2.0.0.schema.json\",\n \"title\": \"Person\",\n \"description\": \"A person represented by a record, referenced by links to that record, with editable account identity associations. Not an authentication or access-control assertion.\",\n \"type\": \"object\",\n \"required\": [\n \"name\"\n ],\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Collection-owned display name, not a verified account name.\"\n },\n \"identities\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"description\": \"Editable identity associations. Missing or empty means this person has no linked account. Match issuer and subject exactly; never match by email or name.\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"issuer\",\n \"subject\"\n ],\n \"properties\": {\n \"issuer\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"pattern\": \"^https?://\",\n \"description\": \"Stable issuer URL supplied by the identity service. Copy exactly; do not derive from a collection authority or relay URL.\"\n },\n \"subject\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Opaque, case-sensitive, account-wide identifier supplied by the issuer. Not an email, membership ID, or credential.\"\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n}\n" - }, - { - "source": "contracts/mdbase.person/2.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.person\nversion: 2.0.0\nname: Person\ndescription: A person record, referenced by links, with editable account identity associations.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.person/2.0.0.schema.json\n---\n\n# Person\n\nA person is collection data, independent of an account or collection membership.\nOther records refer to a person with an ordinary mdbase link to the person's\nrecord, such as `\"[[Alex Rivera]]\"`, declared in the referring type's\n`collection.links` and resolved with the collection's own link rules. Never\nrefer to a person by name text, email address, account subject, or membership\nID. Collections choose their own local type and field names through explicit\n`implements` mappings.\n\nVersion 2.0.0 removes the separate `id` field of 1.0.0. Link resolution already\nidentifies the record, and rename reference updates keep links current, so a\nsecond identifier only created a way for the two to disagree.\n\n`name` is a collection-owned display label. `identities` optionally associates\nthis person with one or more accounts through issuer/subject pairs. A person\nwithout a Connect account is valid. The same record can travel between hosted,\nrelay, local, and exported collections without rewriting its identity references.\n\n## Identity matching\n\nAn identity service supplies the authenticated caller's issuer and subject.\nSubjects are opaque, account-wide identifiers, stable across email changes,\ncollection memberships, and removal/rejoining. Different identity issuers may\nuse the same subject; both fields must match exactly. Consumers must not trim,\ncase-fold, resolve redirects, or otherwise normalize either field when matching.\nCopy the issuer value supplied by the service, including its trailing-slash\nconvention. Never derive the issuer from the current collection authority URL.\nHTTP issuers support explicitly configured development and self-hosted instances;\nproduction deployments should use HTTPS.\n\nAn application resolves an identity across all implementing person records:\n\n- No matching person: unlinked, not anonymous authentication and not an error.\n- Exactly one matching record: linked.\n- Multiple matching records: ambiguous. Do not pick the first match, merge\n records, or overwrite a link.\n\nA partial or failed query cannot establish that a match is unique. Consumers\nmust handle ambiguity: several records, possibly of several local types, can\nclaim the same identity.\n\n## Editable data, not security authority\n\nIdentity associations have exactly the same trust as other editable collection\ndata. Editing one may change an application's \"Assigned to me\" view. It must\nnever change authentication, membership, permissions, authenticated audit\nattribution, or proof of identity to another service. Schema conformance proves\nshape, not that an identity association is truthful.\n\n\"Link this person to me\" is an ordinary record update using the authenticated\ncaller's identity. Never infer a link from a matching email or display name.\nMembership and current account display names come from the identity service,\nnot frontmatter. A person association must never invite someone or grant access.\n\n## Lifecycle and portability\n\nRenaming or moving a person record through mdbase or an editor that updates\nreferences keeps links to it current. Removing a member does not delete their\nperson record or task assignments. Deleting a record leaves unresolved links;\nconsumers should preserve these rather than silently unassigning work. Giving a\ndifferent person's record the old record's name or path redirects existing\nlinks and should not be treated as a routine rename.\n\nCopying records preserves account associations, but never copies collection\naccess. Multiple issuer/subject entries let one person represent accounts at\ndifferent identity services. Account deletion or an issuer migration may leave\nan unresolved identity association; do not automatically rebind it to a newly\ncreated account. Stored names and identity references remain collection data\nsubject to that collection's retention and editing policies.\n\nAccount-wide subjects deliberately allow correlation across collections. This\nis a portability trade-off, not an anonymity guarantee. Never store passwords,\naccess tokens, refresh tokens, or other credentials in these fields.\n\n## Contact information\n\nThis contract does not define another address book. A local type can also\nimplement `mdbase.contact` for compact contact semantics, or\n`mdbase.jscontact.card` when it intentionally stores that interchange shape.\nThe starter Person type implements both Person and Contact.\n" - }, - { - "source": "schemas/mdbase.contact/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://mdbase.dev/contracts/schemas/mdbase.contact/1.0.0.schema.json\",\n \"title\": \"Contact\",\n \"description\": \"A compact application-facing contact view.\",\n \"type\": \"object\",\n \"required\": [\"name\"],\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"The name applications should use when presenting this contact.\"\n },\n \"kind\": {\n \"type\": \"string\",\n \"enum\": [\"individual\", \"organisation\", \"group\"],\n \"description\": \"The broad kind of contact when the collection distinguishes it.\"\n },\n \"primary_email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"description\": \"The preferred email address for this contact.\"\n },\n \"primary_phone\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"The preferred telephone number for this contact.\"\n },\n \"organisation\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"The organisation most closely associated with this contact.\"\n },\n \"birthday\": {\n \"type\": \"string\",\n \"format\": \"date\",\n \"description\": \"The contact's birthday when known.\"\n }\n },\n \"additionalProperties\": false\n}\n" - }, - { - "source": "contracts/mdbase.contact/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.contact\nversion: 1.0.0\nname: Contact\ndescription: A compact application-facing view of a person or organisation.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.contact/1.0.0.schema.json\n---\n\n# Contact\n\nThis contract exposes the small set of contact semantics commonly shared by\naddress books, relationship tools, and other applications. A collection keeps\nits own field names and may store richer local data; the implementing type maps\nonly the fields it wants applications to see.\n\nThe contract is deliberately not an interchange format. Exporters can convert\nthis view to JSContact, vCard, or another wire representation without requiring\nMarkdown records to store that representation directly.\n" - }, - { - "source": "types/person/2.md", - "document": "---\nkind: mdbase.type\nname: person\nversion: 2\ndescription: An individual that other notes link to, with a collection-owned display name and optional contact details and account associations.\nmatch:\n where:\n type: person\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: Person\n description: One person represented by an ordinary note. Contact details and account associations are optional; this record never grants access or membership.\n type: object\n required: [type, name]\n properties:\n type:\n const: person\n description: Identifies this note as a Person. Usually set by the application; changing it changes which type validates the note.\n name:\n type: string\n minLength: 1\n pattern: '\\S'\n description: The display name to use in this collection. Use a full name, preferred name, or single name as appropriate; no first/last-name split is required. It can differ from an account's name and is not automatically synchronised with it.\n identities:\n type: array\n description: Optional accounts associated with this person, each identified by an exact issuer and subject pair. Omit this field for someone without an account. These editable associations help applications find your person record; they are not proof of identity and never grant access. Avoid linking the same account to multiple person notes.\n uniqueItems: true\n items:\n type: object\n description: One account association supplied by its identity service. Both issuer and subject must match exactly; never infer them from a name or email.\n required: [issuer, subject]\n properties:\n issuer:\n type: string\n format: uri\n pattern: '^https?://'\n description: The exact identity-service issuer URL reported for this account. Preserve its scheme, case, path, and trailing slash; do not guess it from the collection's hosting address.\n subject:\n type: string\n pattern: '\\S'\n description: The opaque account identifier reported by that issuer, not a display name, email, password, or access token. Copy it exactly; a different issuer may use the same subject for a different account.\n additionalProperties: false\n kind:\n const: individual\n default: individual\n description: This Person starter represents an individual. The organisation field describes their affiliation, not a different record kind. Existing organisation or group contacts can keep their own Contact-compatible type.\n email:\n type: string\n format: email\n description: The preferred email address for contacting this person. Optional contact information only; it does not establish an account association or grant access.\n phone:\n type: string\n minLength: 1\n description: The preferred telephone number, stored as text so country codes, formatting, and extensions can be preserved. Include a country code when useful; omit if unknown.\n organisation:\n type: string\n minLength: 1\n description: The person's main affiliation, such as an employer, school, or community. A collection-owned display label, not a membership or access-control setting; omit if not relevant.\n birthday:\n type: string\n format: date\n description: A known birthday as a full calendar date in YYYY-MM-DD form. Omit if unknown or if only the month and day are known; do not invent a year. Consider whether this collection needs this personal information.\n additionalProperties: true\ncollection:\n display:\n name_field: name\n description_field: organisation\n icon: user\nimplements:\n - contract: mdbase.person\n version: 2.0.0\n fields:\n name: name\n identities: identities\n - contract: mdbase.contact\n version: 1.0.0\n fields:\n name: name\n kind: kind\n primary_email: email\n primary_phone: phone\n organisation: organisation\n birthday: birthday\n---\n\n# Person\n\nUse one note per individual, whether or not they have a Connect account. This\nsingle type supplies both a Person record and optional Contact details. You do\nnot need a second Contact note for the same person.\n\n## Start with a name\n\n```yaml\ntype: person\nname: Alex Rivera\n```\n\nOther notes refer to this person with an ordinary link to this note, such as\n`[[Alex Rivera]]` in a task's `assignees`. Links to this note appear in its\nbacklinks. Rename or move the note with a tool that updates references, as mdbase\nand Obsidian do, so those links stay current. Reusing a person's file name for\nsomebody else redirects existing links to the wrong person.\n\nThe name is your collection's display label. Full names, preferred names and\nsingle names are equally valid. There is no required first-name/last-name split.\n\n## Add only the contact details you need\n\nEmail, phone, organisation and birthday are optional. Omit unknown values rather\nthan filling them with empty strings or guesses. Store phone numbers as text,\nincluding an international prefix or extension when helpful. Birthday currently\nrequires a complete date; partial dates need a separately configured local field.\nKeep free-form context in the Markdown body and be deliberate about sensitive\npersonal information in shared collections.\n\nThis starter describes individuals. Existing organisation and group records can\ncontinue using their Contact-compatible type; setting someone's affiliation does\nnot turn their Person note into an organisation record.\n\n## Link accounts deliberately\n\nThe editor's **Link this record to me** action uses the authenticated account's\nactual issuer and subject. If configuring these manually, copy both exact values\nfrom the identity service. Do not guess them from an email, display name, or the\nserver hosting this collection. Multiple entries may represent the same person\nat different identity services. Omit `identities` when there is no account to link.\n\nAssociations are ordinary editable data, not authentication or proof of identity.\nLinking never invites someone, grants access, or changes collection membership.\nNever put credentials in a person record. Avoid linking the same account from\nseveral notes: applications should report ambiguity, not guess which\nrecord to use. Account deletion or recreation is not permission to reassign an\nold association automatically.\n\n## Keep the collection's own shape\n\nThe inline schema belongs to this collection. You may add local fields, or rename\nfields and update their explicit `implements` mappings. Apps use those mappings\nfor the Person and Contact contracts; they need not assume your local field names.\nAdditional fields remain part of the note but do not automatically become shared\ncontract fields. Do not edit published contracts to customise this type.\n\nInstalling a newer starter does not overwrite an existing customised type or\nmigrate your address book. Converting an existing individual Contact to Person\nshould be a reviewed edit of that one note, preserving its path, fields and body.\n" - } - ], - "provides": [ - { - "id": "mdbase.person", - "version": "2.0.0", - "digest": "sha256:f16c462a1fd422f44ed055002f8476ec53c164107647fec782aeb74adeab2f9d" - }, - { - "id": "mdbase.contact", - "version": "1.0.0", - "digest": "sha256:49cfe15403dfc741a693e89a2f4d2857de306f391d02cb03e67bfaf0aa1d6b0d" - } - ] -} diff --git a/public/contracts/packs/mdbase.contact/1.3.0.json b/public/contracts/packs/mdbase.contact/1.3.0.json deleted file mode 100644 index b6f6e4f..0000000 --- a/public/contracts/packs/mdbase.contact/1.3.0.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "manifest": { - "kind": "mdbase.type-pack", - "id": "mdbase.contact", - "version": "1.3.0", - "name": "People type pack", - "description": "Portable people, editable account identity associations, and familiar contact fields.", - "resources": [ - { - "kind": "schema", - "mode": "managed", - "source": "schemas/mdbase.person/1.0.0.schema.json", - "target": "schemas/mdbase.person/1.0.0.schema.json", - "digest": "sha256:3254afaa98c895e84fdc0aba299e67a0f3b594681c5581313ece5fcf4e2c6d93" - }, - { - "kind": "contract", - "mode": "managed", - "source": "contracts/mdbase.person/1.0.0.md", - "target": "_contracts/mdbase.person/1.0.0.md", - "digest": "sha256:e2a9435ad01a2c06c151bf6af62a9d04aa30faa8e6128e4b5fe39378c767465c" - }, - { - "kind": "schema", - "mode": "managed", - "source": "schemas/mdbase.person/2.0.0.schema.json", - "target": "schemas/mdbase.person/2.0.0.schema.json", - "digest": "sha256:f9705e5869a2814086b907323749f63dce60de535728d6725601f02901ae60ac" - }, - { - "kind": "contract", - "mode": "managed", - "source": "contracts/mdbase.person/2.0.0.md", - "target": "_contracts/mdbase.person/2.0.0.md", - "digest": "sha256:2899b149b1602bd4e51ff8e87c82dc92da3f690f4e89b1a6caf5b2b555540fe5" - }, - { - "kind": "schema", - "mode": "managed", - "source": "schemas/mdbase.contact/1.0.0.schema.json", - "target": "schemas/mdbase.contact/1.0.0.schema.json", - "digest": "sha256:bd8a011d18c71164b633f4e82cb33faa5b658cdba4f89312a34c13bf46a350d2" - }, - { - "kind": "contract", - "mode": "managed", - "source": "contracts/mdbase.contact/1.0.0.md", - "target": "_contracts/mdbase.contact/1.0.0.md", - "digest": "sha256:e3634a35737ada5eb62e3e15f1c0c9d2e27c55a3f98dfab94bbc14c40404903d" - }, - { - "kind": "type", - "mode": "seed", - "source": "types/person/3.md", - "target": "_types/person.md", - "digest": "sha256:e74ebbce6c67e195a52d005c29ad63f93ae044800a857d33fb3bbc73135adb72", - "upgrade_from": { - "digest": "sha256:aa81c2964285ecc69fcb96bca4b6ae80bbddeb648908d840d7c7be50df15b362", - "document": "---\nkind: mdbase.type\nname: person\nversion: 2\ndescription: An individual that other notes link to, with a collection-owned display name and optional contact details and account associations.\nmatch:\n where:\n type: person\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: Person\n description: One person represented by an ordinary note. Contact details and account associations are optional; this record never grants access or membership.\n type: object\n required: [type, name]\n properties:\n type:\n const: person\n description: Identifies this note as a Person. Usually set by the application; changing it changes which type validates the note.\n name:\n type: string\n minLength: 1\n pattern: '\\S'\n description: The display name to use in this collection. Use a full name, preferred name, or single name as appropriate; no first/last-name split is required. It can differ from an account's name and is not automatically synchronised with it.\n identities:\n type: array\n description: Optional accounts associated with this person, each identified by an exact issuer and subject pair. Omit this field for someone without an account. These editable associations help applications find your person record; they are not proof of identity and never grant access. Avoid linking the same account to multiple person notes.\n uniqueItems: true\n items:\n type: object\n description: One account association supplied by its identity service. Both issuer and subject must match exactly; never infer them from a name or email.\n required: [issuer, subject]\n properties:\n issuer:\n type: string\n format: uri\n pattern: '^https?://'\n description: The exact identity-service issuer URL reported for this account. Preserve its scheme, case, path, and trailing slash; do not guess it from the collection's hosting address.\n subject:\n type: string\n pattern: '\\S'\n description: The opaque account identifier reported by that issuer, not a display name, email, password, or access token. Copy it exactly; a different issuer may use the same subject for a different account.\n additionalProperties: false\n kind:\n const: individual\n default: individual\n description: This Person starter represents an individual. The organisation field describes their affiliation, not a different record kind. Existing organisation or group contacts can keep their own Contact-compatible type.\n email:\n type: string\n format: email\n description: The preferred email address for contacting this person. Optional contact information only; it does not establish an account association or grant access.\n phone:\n type: string\n minLength: 1\n description: The preferred telephone number, stored as text so country codes, formatting, and extensions can be preserved. Include a country code when useful; omit if unknown.\n organisation:\n type: string\n minLength: 1\n description: The person's main affiliation, such as an employer, school, or community. A collection-owned display label, not a membership or access-control setting; omit if not relevant.\n birthday:\n type: string\n format: date\n description: A known birthday as a full calendar date in YYYY-MM-DD form. Omit if unknown or if only the month and day are known; do not invent a year. Consider whether this collection needs this personal information.\n additionalProperties: true\ncollection:\n display:\n name_field: name\n description_field: organisation\n icon: user\nimplements:\n - contract: mdbase.person\n version: 2.0.0\n fields:\n name: name\n identities: identities\n - contract: mdbase.contact\n version: 1.0.0\n fields:\n name: name\n kind: kind\n primary_email: email\n primary_phone: phone\n organisation: organisation\n birthday: birthday\n---\n\n# Person\n\nUse one note per individual, whether or not they have a Connect account. This\nsingle type supplies both a Person record and optional Contact details. You do\nnot need a second Contact note for the same person.\n\n## Start with a name\n\n```yaml\ntype: person\nname: Alex Rivera\n```\n\nOther notes refer to this person with an ordinary link to this note, such as\n`[[Alex Rivera]]` in a task's `assignees`. Links to this note appear in its\nbacklinks. Rename or move the note with a tool that updates references, as mdbase\nand Obsidian do, so those links stay current. Reusing a person's file name for\nsomebody else redirects existing links to the wrong person.\n\nThe name is your collection's display label. Full names, preferred names and\nsingle names are equally valid. There is no required first-name/last-name split.\n\n## Add only the contact details you need\n\nEmail, phone, organisation and birthday are optional. Omit unknown values rather\nthan filling them with empty strings or guesses. Store phone numbers as text,\nincluding an international prefix or extension when helpful. Birthday currently\nrequires a complete date; partial dates need a separately configured local field.\nKeep free-form context in the Markdown body and be deliberate about sensitive\npersonal information in shared collections.\n\nThis starter describes individuals. Existing organisation and group records can\ncontinue using their Contact-compatible type; setting someone's affiliation does\nnot turn their Person note into an organisation record.\n\n## Link accounts deliberately\n\nThe editor's **Link this record to me** action uses the authenticated account's\nactual issuer and subject. If configuring these manually, copy both exact values\nfrom the identity service. Do not guess them from an email, display name, or the\nserver hosting this collection. Multiple entries may represent the same person\nat different identity services. Omit `identities` when there is no account to link.\n\nAssociations are ordinary editable data, not authentication or proof of identity.\nLinking never invites someone, grants access, or changes collection membership.\nNever put credentials in a person record. Avoid linking the same account from\nseveral notes: applications should report ambiguity, not guess which\nrecord to use. Account deletion or recreation is not permission to reassign an\nold association automatically.\n\n## Keep the collection's own shape\n\nThe inline schema belongs to this collection. You may add local fields, or rename\nfields and update their explicit `implements` mappings. Apps use those mappings\nfor the Person and Contact contracts; they need not assume your local field names.\nAdditional fields remain part of the note but do not automatically become shared\ncontract fields. Do not edit published contracts to customise this type.\n\nInstalling a newer starter does not overwrite an existing customised type or\nmigrate your address book. Converting an existing individual Contact to Person\nshould be a reviewed edit of that one note, preserving its path, fields and body.\n" - } - } - ] - }, - "resources": [ - { - "source": "schemas/mdbase.person/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://mdbase.dev/contracts/schemas/mdbase.person/1.0.0.schema.json\",\n \"title\": \"Person\",\n \"description\": \"A portable person reference with editable account identity associations. Not an authentication or access-control assertion.\",\n \"type\": \"object\",\n \"required\": [\"id\", \"name\"],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Stable person identifier used by references such as task assignments; independent of file path, name, account, and membership.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Collection-owned display name, not a verified account name.\"\n },\n \"identities\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"description\": \"Editable identity associations. Missing or empty means this person has no linked account. Match issuer and subject exactly; never match by email or name.\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\"issuer\", \"subject\"],\n \"properties\": {\n \"issuer\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"pattern\": \"^https?://\",\n \"description\": \"Stable issuer URL supplied by the identity service. Copy exactly; do not derive from a collection authority or relay URL.\"\n },\n \"subject\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Opaque, case-sensitive, account-wide identifier supplied by the issuer. Not an email, membership ID, or credential.\"\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n}\n" - }, - { - "source": "contracts/mdbase.person/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.person\nversion: 1.0.0\nname: Person\ndescription: A portable person reference with editable account identity associations.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.person/1.0.0.schema.json\n---\n\n# Person\n\nA person is collection data, independent of an account or collection membership.\nApplications reference the stable `id`, not a name, file path, email address,\naccount subject, or membership ID. Collections choose their own local type and\nfield names through explicit `implements` mappings.\n\n`name` is a collection-owned display label. `identities` optionally associates\nthis person with one or more accounts through issuer/subject pairs. A person\nwithout a Connect account is valid. The same record can travel between hosted,\nrelay, local, and exported collections without rewriting its identity references.\n\n## Identity matching\n\nAn identity service supplies the authenticated caller's issuer and subject.\nSubjects are opaque, account-wide identifiers, stable across email changes,\ncollection memberships, and removal/rejoining. Different identity issuers may\nuse the same subject; both fields must match exactly. Consumers must not trim,\ncase-fold, resolve redirects, or otherwise normalize either field when matching.\nCopy the issuer value supplied by the service, including its trailing-slash\nconvention. Never derive the issuer from the current collection authority URL.\nHTTP issuers support explicitly configured development and self-hosted instances;\nproduction deployments should use HTTPS.\n\nAn application resolves an identity across all implementing person records:\n\n- No matching person: unlinked, not anonymous authentication and not an error.\n- Exactly one matching record with an unambiguous person ID: linked.\n- Multiple matching records, or multiple records with that person's ID:\n ambiguous. Do not pick the first match, merge records, or overwrite a link.\n\nA partial or failed query cannot establish that a match is unique. Cross-record\nuniqueness is a collection/application invariant, not something this JSON Schema\ncan prove. Consumers must handle ambiguity even if a starter type has a local\nuniqueness constraint: several local types can implement this contract.\n\n## Editable data, not security authority\n\nIdentity associations have exactly the same trust as other editable collection\ndata. Editing one may change an application's \"Assigned to me\" view. It must\nnever change authentication, membership, permissions, authenticated audit\nattribution, or proof of identity to another service. Schema conformance proves\nshape, not that an identity association is truthful.\n\n\"Link this person to me\" is an ordinary record update using the authenticated\ncaller's identity. Never infer a link from a matching email or display name.\nMembership and current account display names come from the identity service,\nnot frontmatter. A person association must never invite someone or grant access.\n\n## Lifecycle and portability\n\nRenaming or moving a record does not change its ID. Removing a member does not\ndelete their person record or task assignments. Deleting a record leaves\nunresolved references; consumers should preserve these rather than silently\nunassigning work. Reusing an ID for a different person changes every reference\nand should not be treated as a routine rename.\n\nCopying records preserves account associations, but never copies collection\naccess. Multiple issuer/subject entries let one person represent accounts at\ndifferent identity services. Account deletion or an issuer migration may leave\nan unresolved identity association; do not automatically rebind it to a newly\ncreated account. Stored names and identity references remain collection data\nsubject to that collection's retention and editing policies.\n\nAccount-wide subjects deliberately allow correlation across collections. This\nis a portability trade-off, not an anonymity guarantee. Never store passwords,\naccess tokens, refresh tokens, or other credentials in these fields.\n\n## Contact information\n\nThis contract does not define another address book. A local type can also\nimplement `mdbase.contact` for compact contact semantics, or\n`mdbase.jscontact.card` when it intentionally stores that interchange shape.\nThe starter Person type implements both Person and Contact.\n" - }, - { - "source": "schemas/mdbase.person/2.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://mdbase.dev/contracts/schemas/mdbase.person/2.0.0.schema.json\",\n \"title\": \"Person\",\n \"description\": \"A person represented by a record, referenced by links to that record, with editable account identity associations. Not an authentication or access-control assertion.\",\n \"type\": \"object\",\n \"required\": [\n \"name\"\n ],\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Collection-owned display name, not a verified account name.\"\n },\n \"identities\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"description\": \"Editable identity associations. Missing or empty means this person has no linked account. Match issuer and subject exactly; never match by email or name.\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"issuer\",\n \"subject\"\n ],\n \"properties\": {\n \"issuer\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"pattern\": \"^https?://\",\n \"description\": \"Stable issuer URL supplied by the identity service. Copy exactly; do not derive from a collection authority or relay URL.\"\n },\n \"subject\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Opaque, case-sensitive, account-wide identifier supplied by the issuer. Not an email, membership ID, or credential.\"\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n}\n" - }, - { - "source": "contracts/mdbase.person/2.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.person\nversion: 2.0.0\nname: Person\ndescription: A person record, referenced by links, with editable account identity associations.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.person/2.0.0.schema.json\n---\n\n# Person\n\nA person is collection data, independent of an account or collection membership.\nOther records refer to a person with an ordinary mdbase link to the person's\nrecord, such as `\"[[Alex Rivera]]\"`, declared in the referring type's\n`collection.links` and resolved with the collection's own link rules. Never\nrefer to a person by name text, email address, account subject, or membership\nID. Collections choose their own local type and field names through explicit\n`implements` mappings.\n\nVersion 2.0.0 removes the separate `id` field of 1.0.0. Link resolution already\nidentifies the record, and rename reference updates keep links current, so a\nsecond identifier only created a way for the two to disagree.\n\n`name` is a collection-owned display label. `identities` optionally associates\nthis person with one or more accounts through issuer/subject pairs. A person\nwithout a Connect account is valid. The same record can travel between hosted,\nrelay, local, and exported collections without rewriting its identity references.\n\n## Identity matching\n\nAn identity service supplies the authenticated caller's issuer and subject.\nSubjects are opaque, account-wide identifiers, stable across email changes,\ncollection memberships, and removal/rejoining. Different identity issuers may\nuse the same subject; both fields must match exactly. Consumers must not trim,\ncase-fold, resolve redirects, or otherwise normalize either field when matching.\nCopy the issuer value supplied by the service, including its trailing-slash\nconvention. Never derive the issuer from the current collection authority URL.\nHTTP issuers support explicitly configured development and self-hosted instances;\nproduction deployments should use HTTPS.\n\nAn application resolves an identity across all implementing person records:\n\n- No matching person: unlinked, not anonymous authentication and not an error.\n- Exactly one matching record: linked.\n- Multiple matching records: ambiguous. Do not pick the first match, merge\n records, or overwrite a link.\n\nA partial or failed query cannot establish that a match is unique. Consumers\nmust handle ambiguity: several records, possibly of several local types, can\nclaim the same identity.\n\n## Editable data, not security authority\n\nIdentity associations have exactly the same trust as other editable collection\ndata. Editing one may change an application's \"Assigned to me\" view. It must\nnever change authentication, membership, permissions, authenticated audit\nattribution, or proof of identity to another service. Schema conformance proves\nshape, not that an identity association is truthful.\n\n\"Link this person to me\" is an ordinary record update using the authenticated\ncaller's identity. Never infer a link from a matching email or display name.\nMembership and current account display names come from the identity service,\nnot frontmatter. A person association must never invite someone or grant access.\n\n## Lifecycle and portability\n\nRenaming or moving a person record through mdbase or an editor that updates\nreferences keeps links to it current. Removing a member does not delete their\nperson record or task assignments. Deleting a record leaves unresolved links;\nconsumers should preserve these rather than silently unassigning work. Giving a\ndifferent person's record the old record's name or path redirects existing\nlinks and should not be treated as a routine rename.\n\nCopying records preserves account associations, but never copies collection\naccess. Multiple issuer/subject entries let one person represent accounts at\ndifferent identity services. Account deletion or an issuer migration may leave\nan unresolved identity association; do not automatically rebind it to a newly\ncreated account. Stored names and identity references remain collection data\nsubject to that collection's retention and editing policies.\n\nAccount-wide subjects deliberately allow correlation across collections. This\nis a portability trade-off, not an anonymity guarantee. Never store passwords,\naccess tokens, refresh tokens, or other credentials in these fields.\n\n## Contact information\n\nThis contract does not define another address book. A local type can also\nimplement `mdbase.contact` for compact contact semantics, or\n`mdbase.jscontact.card` when it intentionally stores that interchange shape.\nThe starter Person type implements both Person and Contact.\n" - }, - { - "source": "schemas/mdbase.contact/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://mdbase.dev/contracts/schemas/mdbase.contact/1.0.0.schema.json\",\n \"title\": \"Contact\",\n \"description\": \"A compact application-facing contact view.\",\n \"type\": \"object\",\n \"required\": [\"name\"],\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"The name applications should use when presenting this contact.\"\n },\n \"kind\": {\n \"type\": \"string\",\n \"enum\": [\"individual\", \"organisation\", \"group\"],\n \"description\": \"The broad kind of contact when the collection distinguishes it.\"\n },\n \"primary_email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"description\": \"The preferred email address for this contact.\"\n },\n \"primary_phone\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"The preferred telephone number for this contact.\"\n },\n \"organisation\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"The organisation most closely associated with this contact.\"\n },\n \"birthday\": {\n \"type\": \"string\",\n \"format\": \"date\",\n \"description\": \"The contact's birthday when known.\"\n }\n },\n \"additionalProperties\": false\n}\n" - }, - { - "source": "contracts/mdbase.contact/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.contact\nversion: 1.0.0\nname: Contact\ndescription: A compact application-facing view of a person or organisation.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.contact/1.0.0.schema.json\n---\n\n# Contact\n\nThis contract exposes the small set of contact semantics commonly shared by\naddress books, relationship tools, and other applications. A collection keeps\nits own field names and may store richer local data; the implementing type maps\nonly the fields it wants applications to see.\n\nThe contract is deliberately not an interchange format. Exporters can convert\nthis view to JSContact, vCard, or another wire representation without requiring\nMarkdown records to store that representation directly.\n" - }, - { - "source": "types/person/3.md", - "document": "---\nkind: mdbase.type\nname: person\nversion: 3\ndescription: An individual that other notes link to, with a collection-owned display name and optional contact details and account associations.\nmatch:\n where:\n type: person\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: Person\n description: One person represented by an ordinary note. Contact details and account associations are optional; this record never grants access or membership.\n type: object\n required: [name]\n properties:\n name:\n type: string\n minLength: 1\n pattern: '\\S'\n description: The display name to use in this collection. Use a full name, preferred name, or single name as appropriate; no first/last-name split is required. It can differ from an account's name and is not automatically synchronised with it.\n identities:\n type: array\n description: Optional accounts associated with this person, each identified by an exact issuer and subject pair. Omit this field for someone without an account. These editable associations help applications find your person record; they are not proof of identity and never grant access. Avoid linking the same account to multiple person notes.\n uniqueItems: true\n items:\n type: object\n description: One account association supplied by its identity service. Both issuer and subject must match exactly; never infer them from a name or email.\n required: [issuer, subject]\n properties:\n issuer:\n type: string\n format: uri\n pattern: '^https?://'\n description: The exact identity-service issuer URL reported for this account. Preserve its scheme, case, path, and trailing slash; do not guess it from the collection's hosting address.\n subject:\n type: string\n pattern: '\\S'\n description: The opaque account identifier reported by that issuer, not a display name, email, password, or access token. Copy it exactly; a different issuer may use the same subject for a different account.\n additionalProperties: false\n kind:\n const: individual\n default: individual\n description: This Person starter represents an individual. The organisation field describes their affiliation, not a different record kind. Existing organisation or group contacts can keep their own Contact-compatible type.\n email:\n type: string\n format: email\n description: The preferred email address for contacting this person. Optional contact information only; it does not establish an account association or grant access.\n phone:\n type: string\n minLength: 1\n description: The preferred telephone number, stored as text so country codes, formatting, and extensions can be preserved. Include a country code when useful; omit if unknown.\n organisation:\n type: string\n minLength: 1\n description: The person's main affiliation, such as an employer, school, or community. A collection-owned display label, not a membership or access-control setting; omit if not relevant.\n birthday:\n type: string\n format: date\n description: A known birthday as a full calendar date in YYYY-MM-DD form. Omit if unknown or if only the month and day are known; do not invent a year. Consider whether this collection needs this personal information.\n additionalProperties: true\ncollection:\n display:\n name_field: name\n description_field: organisation\n icon: user\nimplements:\n - contract: mdbase.person\n version: 2.0.0\n fields:\n name: name\n identities: identities\n - contract: mdbase.contact\n version: 1.0.0\n fields:\n name: name\n kind: kind\n primary_email: email\n primary_phone: phone\n organisation: organisation\n birthday: birthday\n---\n\n# Person\n\nUse one note per individual, whether or not they have a Connect account. This\nsingle type supplies both a Person record and optional Contact details. You do\nnot need a second Contact note for the same person.\n\n## Start with a name\n\n```yaml\ntype: person\nname: Alex Rivera\n```\n\nOther notes refer to this person with an ordinary link to this note, such as\n`[[Alex Rivera]]` in a task's `assignees`. Links to this note appear in its\nbacklinks. Rename or move the note with a tool that updates references, as mdbase\nand Obsidian do, so those links stay current. Reusing a person's file name for\nsomebody else redirects existing links to the wrong person.\n\nThe name is your collection's display label. Full names, preferred names and\nsingle names are equally valid. There is no required first-name/last-name split.\n\n## Add only the contact details you need\n\nEmail, phone, organisation and birthday are optional. Omit unknown values rather\nthan filling them with empty strings or guesses. Store phone numbers as text,\nincluding an international prefix or extension when helpful. Birthday currently\nrequires a complete date; partial dates need a separately configured local field.\nKeep free-form context in the Markdown body and be deliberate about sensitive\npersonal information in shared collections.\n\nThis starter describes individuals. Existing organisation and group records can\ncontinue using their Contact-compatible type; setting someone's affiliation does\nnot turn their Person note into an organisation record.\n\n## Link accounts deliberately\n\nThe editor's **Link this record to me** action uses the authenticated account's\nactual issuer and subject. If configuring these manually, copy both exact values\nfrom the identity service. Do not guess them from an email, display name, or the\nserver hosting this collection. Multiple entries may represent the same person\nat different identity services. Omit `identities` when there is no account to link.\n\nAssociations are ordinary editable data, not authentication or proof of identity.\nLinking never invites someone, grants access, or changes collection membership.\nNever put credentials in a person record. Avoid linking the same account from\nseveral notes: applications should report ambiguity, not guess which\nrecord to use. Account deletion or recreation is not permission to reassign an\nold association automatically.\n\n## Keep the collection's own shape\n\nThe inline schema belongs to this collection. You may add local fields, or rename\nfields and update their explicit `implements` mappings. Apps use those mappings\nfor the Person and Contact contracts; they need not assume your local field names.\nAdditional fields remain part of the note but do not automatically become shared\ncontract fields. Do not edit published contracts to customise this type.\n\nInstalling a newer starter does not overwrite an existing customised type or\nmigrate your address book. Converting an existing individual Contact to Person\nshould be a reviewed edit of that one note, preserving its path, fields and body.\n" - } - ], - "provides": [ - { - "id": "mdbase.person", - "version": "2.0.0", - "digest": "sha256:f16c462a1fd422f44ed055002f8476ec53c164107647fec782aeb74adeab2f9d" - }, - { - "id": "mdbase.contact", - "version": "1.0.0", - "digest": "sha256:49cfe15403dfc741a693e89a2f4d2857de306f391d02cb03e67bfaf0aa1d6b0d" - } - ] -} diff --git a/public/contracts/packs/mdbase.contact/1.4.0.json b/public/contracts/packs/mdbase.contact/1.4.0.json deleted file mode 100644 index b58cbb5..0000000 --- a/public/contracts/packs/mdbase.contact/1.4.0.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "manifest": { - "kind": "mdbase.type-pack", - "id": "mdbase.contact", - "version": "1.4.0", - "name": "People type pack", - "description": "Portable people, editable account identity associations, and familiar contact fields.", - "resources": [ - { - "kind": "schema", - "mode": "managed", - "source": "schemas/mdbase.person/1.0.0.schema.json", - "target": "schemas/mdbase.person/1.0.0.schema.json", - "digest": "sha256:3254afaa98c895e84fdc0aba299e67a0f3b594681c5581313ece5fcf4e2c6d93" - }, - { - "kind": "contract", - "mode": "managed", - "source": "contracts/mdbase.person/1.0.0.md", - "target": "_contracts/mdbase.person/1.0.0.md", - "digest": "sha256:e2a9435ad01a2c06c151bf6af62a9d04aa30faa8e6128e4b5fe39378c767465c" - }, - { - "kind": "schema", - "mode": "managed", - "source": "schemas/mdbase.person/2.0.0.schema.json", - "target": "schemas/mdbase.person/2.0.0.schema.json", - "digest": "sha256:f9705e5869a2814086b907323749f63dce60de535728d6725601f02901ae60ac" - }, - { - "kind": "contract", - "mode": "managed", - "source": "contracts/mdbase.person/2.0.0.md", - "target": "_contracts/mdbase.person/2.0.0.md", - "digest": "sha256:2899b149b1602bd4e51ff8e87c82dc92da3f690f4e89b1a6caf5b2b555540fe5" - }, - { - "kind": "schema", - "mode": "managed", - "source": "schemas/mdbase.contact/1.0.0.schema.json", - "target": "schemas/mdbase.contact/1.0.0.schema.json", - "digest": "sha256:bd8a011d18c71164b633f4e82cb33faa5b658cdba4f89312a34c13bf46a350d2" - }, - { - "kind": "contract", - "mode": "managed", - "source": "contracts/mdbase.contact/1.0.0.md", - "target": "_contracts/mdbase.contact/1.0.0.md", - "digest": "sha256:e3634a35737ada5eb62e3e15f1c0c9d2e27c55a3f98dfab94bbc14c40404903d" - }, - { - "kind": "type", - "mode": "seed", - "source": "types/person/3.md", - "target": "_types/person.md", - "digest": "sha256:e74ebbce6c67e195a52d005c29ad63f93ae044800a857d33fb3bbc73135adb72", - "upgrade_from": [ - { - "digest": "sha256:aa81c2964285ecc69fcb96bca4b6ae80bbddeb648908d840d7c7be50df15b362", - "version": 2, - "document": "---\nkind: mdbase.type\nname: person\nversion: 2\ndescription: An individual that other notes link to, with a collection-owned display name and optional contact details and account associations.\nmatch:\n where:\n type: person\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: Person\n description: One person represented by an ordinary note. Contact details and account associations are optional; this record never grants access or membership.\n type: object\n required: [type, name]\n properties:\n type:\n const: person\n description: Identifies this note as a Person. Usually set by the application; changing it changes which type validates the note.\n name:\n type: string\n minLength: 1\n pattern: '\\S'\n description: The display name to use in this collection. Use a full name, preferred name, or single name as appropriate; no first/last-name split is required. It can differ from an account's name and is not automatically synchronised with it.\n identities:\n type: array\n description: Optional accounts associated with this person, each identified by an exact issuer and subject pair. Omit this field for someone without an account. These editable associations help applications find your person record; they are not proof of identity and never grant access. Avoid linking the same account to multiple person notes.\n uniqueItems: true\n items:\n type: object\n description: One account association supplied by its identity service. Both issuer and subject must match exactly; never infer them from a name or email.\n required: [issuer, subject]\n properties:\n issuer:\n type: string\n format: uri\n pattern: '^https?://'\n description: The exact identity-service issuer URL reported for this account. Preserve its scheme, case, path, and trailing slash; do not guess it from the collection's hosting address.\n subject:\n type: string\n pattern: '\\S'\n description: The opaque account identifier reported by that issuer, not a display name, email, password, or access token. Copy it exactly; a different issuer may use the same subject for a different account.\n additionalProperties: false\n kind:\n const: individual\n default: individual\n description: This Person starter represents an individual. The organisation field describes their affiliation, not a different record kind. Existing organisation or group contacts can keep their own Contact-compatible type.\n email:\n type: string\n format: email\n description: The preferred email address for contacting this person. Optional contact information only; it does not establish an account association or grant access.\n phone:\n type: string\n minLength: 1\n description: The preferred telephone number, stored as text so country codes, formatting, and extensions can be preserved. Include a country code when useful; omit if unknown.\n organisation:\n type: string\n minLength: 1\n description: The person's main affiliation, such as an employer, school, or community. A collection-owned display label, not a membership or access-control setting; omit if not relevant.\n birthday:\n type: string\n format: date\n description: A known birthday as a full calendar date in YYYY-MM-DD form. Omit if unknown or if only the month and day are known; do not invent a year. Consider whether this collection needs this personal information.\n additionalProperties: true\ncollection:\n display:\n name_field: name\n description_field: organisation\n icon: user\nimplements:\n - contract: mdbase.person\n version: 2.0.0\n fields:\n name: name\n identities: identities\n - contract: mdbase.contact\n version: 1.0.0\n fields:\n name: name\n kind: kind\n primary_email: email\n primary_phone: phone\n organisation: organisation\n birthday: birthday\n---\n\n# Person\n\nUse one note per individual, whether or not they have a Connect account. This\nsingle type supplies both a Person record and optional Contact details. You do\nnot need a second Contact note for the same person.\n\n## Start with a name\n\n```yaml\ntype: person\nname: Alex Rivera\n```\n\nOther notes refer to this person with an ordinary link to this note, such as\n`[[Alex Rivera]]` in a task's `assignees`. Links to this note appear in its\nbacklinks. Rename or move the note with a tool that updates references, as mdbase\nand Obsidian do, so those links stay current. Reusing a person's file name for\nsomebody else redirects existing links to the wrong person.\n\nThe name is your collection's display label. Full names, preferred names and\nsingle names are equally valid. There is no required first-name/last-name split.\n\n## Add only the contact details you need\n\nEmail, phone, organisation and birthday are optional. Omit unknown values rather\nthan filling them with empty strings or guesses. Store phone numbers as text,\nincluding an international prefix or extension when helpful. Birthday currently\nrequires a complete date; partial dates need a separately configured local field.\nKeep free-form context in the Markdown body and be deliberate about sensitive\npersonal information in shared collections.\n\nThis starter describes individuals. Existing organisation and group records can\ncontinue using their Contact-compatible type; setting someone's affiliation does\nnot turn their Person note into an organisation record.\n\n## Link accounts deliberately\n\nThe editor's **Link this record to me** action uses the authenticated account's\nactual issuer and subject. If configuring these manually, copy both exact values\nfrom the identity service. Do not guess them from an email, display name, or the\nserver hosting this collection. Multiple entries may represent the same person\nat different identity services. Omit `identities` when there is no account to link.\n\nAssociations are ordinary editable data, not authentication or proof of identity.\nLinking never invites someone, grants access, or changes collection membership.\nNever put credentials in a person record. Avoid linking the same account from\nseveral notes: applications should report ambiguity, not guess which\nrecord to use. Account deletion or recreation is not permission to reassign an\nold association automatically.\n\n## Keep the collection's own shape\n\nThe inline schema belongs to this collection. You may add local fields, or rename\nfields and update their explicit `implements` mappings. Apps use those mappings\nfor the Person and Contact contracts; they need not assume your local field names.\nAdditional fields remain part of the note but do not automatically become shared\ncontract fields. Do not edit published contracts to customise this type.\n\nInstalling a newer starter does not overwrite an existing customised type or\nmigrate your address book. Converting an existing individual Contact to Person\nshould be a reviewed edit of that one note, preserving its path, fields and body.\n" - }, - { - "digest": "sha256:18896ac3086c7fdcb64748babd7dd8263dbece4fcc6bcf43a53f74d51bcece5e", - "version": 1, - "document": "---\nkind: mdbase.type\nname: person\nversion: 1\ndescription: A portable person with optional account identities and contact information\nmatch:\n where:\n type: person\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: Person\n type: object\n required: [type, id, name]\n properties:\n type:\n const: person\n id:\n type: string\n pattern: '\\S'\n description: Stable person ID; keep this when moving or renaming the note.\n name:\n type: string\n minLength: 1\n pattern: '\\S'\n identities:\n type: array\n uniqueItems: true\n items:\n type: object\n required: [issuer, subject]\n properties:\n issuer:\n type: string\n format: uri\n pattern: '^https?://'\n subject:\n type: string\n pattern: '\\S'\n additionalProperties: false\n kind:\n const: individual\n default: individual\n email:\n type: string\n format: email\n phone:\n type: string\n minLength: 1\n organisation:\n type: string\n minLength: 1\n birthday:\n type: string\n format: date\n additionalProperties: true\ncollection:\n display:\n name_field: name\n description_field: organisation\n icon: user\n unique:\n - field: id\n scope: collection\nimplements:\n - contract: mdbase.person\n version: 1.0.0\n fields:\n id: id\n name: name\n identities: identities\n - contract: mdbase.contact\n version: 1.0.0\n fields:\n name: name\n kind: kind\n primary_email: email\n primary_phone: phone\n organisation: organisation\n birthday: birthday\n---\n\n# Person\n\nCreate a stable ID when adding a person, for example `person_` followed by a\nrandom UUID. Keep it when copying the note to another collection or renaming\nits file. Apps use this ID for assignments and other person references.\n\n```yaml\ntype: person\nid: person_2c1343ec-cac1-4d58-98c9-41736f4de7db\nname: Callum\nidentities:\n - issuer: https://connect.example\n subject: usr_789\n```\n\nUse the actual issuer and subject supplied by Connect, not the example values.\nOmit `identities` for people without accounts. Email is contact information,\nnot a way to establish an identity association. Linking a person does not\ninvite them or grant access to this collection.\n\nIdentity associations and contact labels are ordinary editable data. They are\nnot proof of authentication. Avoid duplicate person IDs or identity pairs\nacross person notes; applications must report ambiguity rather than guess.\n\nThe inline schema belongs to the collection. Add local fields or rename them\nand update the explicit contract mappings without editing published contracts.\n" - } - ] - } - ] - }, - "resources": [ - { - "source": "schemas/mdbase.person/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://mdbase.dev/contracts/schemas/mdbase.person/1.0.0.schema.json\",\n \"title\": \"Person\",\n \"description\": \"A portable person reference with editable account identity associations. Not an authentication or access-control assertion.\",\n \"type\": \"object\",\n \"required\": [\"id\", \"name\"],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Stable person identifier used by references such as task assignments; independent of file path, name, account, and membership.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Collection-owned display name, not a verified account name.\"\n },\n \"identities\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"description\": \"Editable identity associations. Missing or empty means this person has no linked account. Match issuer and subject exactly; never match by email or name.\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\"issuer\", \"subject\"],\n \"properties\": {\n \"issuer\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"pattern\": \"^https?://\",\n \"description\": \"Stable issuer URL supplied by the identity service. Copy exactly; do not derive from a collection authority or relay URL.\"\n },\n \"subject\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Opaque, case-sensitive, account-wide identifier supplied by the issuer. Not an email, membership ID, or credential.\"\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n}\n" - }, - { - "source": "contracts/mdbase.person/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.person\nversion: 1.0.0\nname: Person\ndescription: A portable person reference with editable account identity associations.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.person/1.0.0.schema.json\n---\n\n# Person\n\nA person is collection data, independent of an account or collection membership.\nApplications reference the stable `id`, not a name, file path, email address,\naccount subject, or membership ID. Collections choose their own local type and\nfield names through explicit `implements` mappings.\n\n`name` is a collection-owned display label. `identities` optionally associates\nthis person with one or more accounts through issuer/subject pairs. A person\nwithout a Connect account is valid. The same record can travel between hosted,\nrelay, local, and exported collections without rewriting its identity references.\n\n## Identity matching\n\nAn identity service supplies the authenticated caller's issuer and subject.\nSubjects are opaque, account-wide identifiers, stable across email changes,\ncollection memberships, and removal/rejoining. Different identity issuers may\nuse the same subject; both fields must match exactly. Consumers must not trim,\ncase-fold, resolve redirects, or otherwise normalize either field when matching.\nCopy the issuer value supplied by the service, including its trailing-slash\nconvention. Never derive the issuer from the current collection authority URL.\nHTTP issuers support explicitly configured development and self-hosted instances;\nproduction deployments should use HTTPS.\n\nAn application resolves an identity across all implementing person records:\n\n- No matching person: unlinked, not anonymous authentication and not an error.\n- Exactly one matching record with an unambiguous person ID: linked.\n- Multiple matching records, or multiple records with that person's ID:\n ambiguous. Do not pick the first match, merge records, or overwrite a link.\n\nA partial or failed query cannot establish that a match is unique. Cross-record\nuniqueness is a collection/application invariant, not something this JSON Schema\ncan prove. Consumers must handle ambiguity even if a starter type has a local\nuniqueness constraint: several local types can implement this contract.\n\n## Editable data, not security authority\n\nIdentity associations have exactly the same trust as other editable collection\ndata. Editing one may change an application's \"Assigned to me\" view. It must\nnever change authentication, membership, permissions, authenticated audit\nattribution, or proof of identity to another service. Schema conformance proves\nshape, not that an identity association is truthful.\n\n\"Link this person to me\" is an ordinary record update using the authenticated\ncaller's identity. Never infer a link from a matching email or display name.\nMembership and current account display names come from the identity service,\nnot frontmatter. A person association must never invite someone or grant access.\n\n## Lifecycle and portability\n\nRenaming or moving a record does not change its ID. Removing a member does not\ndelete their person record or task assignments. Deleting a record leaves\nunresolved references; consumers should preserve these rather than silently\nunassigning work. Reusing an ID for a different person changes every reference\nand should not be treated as a routine rename.\n\nCopying records preserves account associations, but never copies collection\naccess. Multiple issuer/subject entries let one person represent accounts at\ndifferent identity services. Account deletion or an issuer migration may leave\nan unresolved identity association; do not automatically rebind it to a newly\ncreated account. Stored names and identity references remain collection data\nsubject to that collection's retention and editing policies.\n\nAccount-wide subjects deliberately allow correlation across collections. This\nis a portability trade-off, not an anonymity guarantee. Never store passwords,\naccess tokens, refresh tokens, or other credentials in these fields.\n\n## Contact information\n\nThis contract does not define another address book. A local type can also\nimplement `mdbase.contact` for compact contact semantics, or\n`mdbase.jscontact.card` when it intentionally stores that interchange shape.\nThe starter Person type implements both Person and Contact.\n" - }, - { - "source": "schemas/mdbase.person/2.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://mdbase.dev/contracts/schemas/mdbase.person/2.0.0.schema.json\",\n \"title\": \"Person\",\n \"description\": \"A person represented by a record, referenced by links to that record, with editable account identity associations. Not an authentication or access-control assertion.\",\n \"type\": \"object\",\n \"required\": [\n \"name\"\n ],\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Collection-owned display name, not a verified account name.\"\n },\n \"identities\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"description\": \"Editable identity associations. Missing or empty means this person has no linked account. Match issuer and subject exactly; never match by email or name.\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"issuer\",\n \"subject\"\n ],\n \"properties\": {\n \"issuer\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"pattern\": \"^https?://\",\n \"description\": \"Stable issuer URL supplied by the identity service. Copy exactly; do not derive from a collection authority or relay URL.\"\n },\n \"subject\": {\n \"type\": \"string\",\n \"pattern\": \"\\\\S\",\n \"description\": \"Opaque, case-sensitive, account-wide identifier supplied by the issuer. Not an email, membership ID, or credential.\"\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n}\n" - }, - { - "source": "contracts/mdbase.person/2.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.person\nversion: 2.0.0\nname: Person\ndescription: A person record, referenced by links, with editable account identity associations.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.person/2.0.0.schema.json\n---\n\n# Person\n\nA person is collection data, independent of an account or collection membership.\nOther records refer to a person with an ordinary mdbase link to the person's\nrecord, such as `\"[[Alex Rivera]]\"`, declared in the referring type's\n`collection.links` and resolved with the collection's own link rules. Never\nrefer to a person by name text, email address, account subject, or membership\nID. Collections choose their own local type and field names through explicit\n`implements` mappings.\n\nVersion 2.0.0 removes the separate `id` field of 1.0.0. Link resolution already\nidentifies the record, and rename reference updates keep links current, so a\nsecond identifier only created a way for the two to disagree.\n\n`name` is a collection-owned display label. `identities` optionally associates\nthis person with one or more accounts through issuer/subject pairs. A person\nwithout a Connect account is valid. The same record can travel between hosted,\nrelay, local, and exported collections without rewriting its identity references.\n\n## Identity matching\n\nAn identity service supplies the authenticated caller's issuer and subject.\nSubjects are opaque, account-wide identifiers, stable across email changes,\ncollection memberships, and removal/rejoining. Different identity issuers may\nuse the same subject; both fields must match exactly. Consumers must not trim,\ncase-fold, resolve redirects, or otherwise normalize either field when matching.\nCopy the issuer value supplied by the service, including its trailing-slash\nconvention. Never derive the issuer from the current collection authority URL.\nHTTP issuers support explicitly configured development and self-hosted instances;\nproduction deployments should use HTTPS.\n\nAn application resolves an identity across all implementing person records:\n\n- No matching person: unlinked, not anonymous authentication and not an error.\n- Exactly one matching record: linked.\n- Multiple matching records: ambiguous. Do not pick the first match, merge\n records, or overwrite a link.\n\nA partial or failed query cannot establish that a match is unique. Consumers\nmust handle ambiguity: several records, possibly of several local types, can\nclaim the same identity.\n\n## Editable data, not security authority\n\nIdentity associations have exactly the same trust as other editable collection\ndata. Editing one may change an application's \"Assigned to me\" view. It must\nnever change authentication, membership, permissions, authenticated audit\nattribution, or proof of identity to another service. Schema conformance proves\nshape, not that an identity association is truthful.\n\n\"Link this person to me\" is an ordinary record update using the authenticated\ncaller's identity. Never infer a link from a matching email or display name.\nMembership and current account display names come from the identity service,\nnot frontmatter. A person association must never invite someone or grant access.\n\n## Lifecycle and portability\n\nRenaming or moving a person record through mdbase or an editor that updates\nreferences keeps links to it current. Removing a member does not delete their\nperson record or task assignments. Deleting a record leaves unresolved links;\nconsumers should preserve these rather than silently unassigning work. Giving a\ndifferent person's record the old record's name or path redirects existing\nlinks and should not be treated as a routine rename.\n\nCopying records preserves account associations, but never copies collection\naccess. Multiple issuer/subject entries let one person represent accounts at\ndifferent identity services. Account deletion or an issuer migration may leave\nan unresolved identity association; do not automatically rebind it to a newly\ncreated account. Stored names and identity references remain collection data\nsubject to that collection's retention and editing policies.\n\nAccount-wide subjects deliberately allow correlation across collections. This\nis a portability trade-off, not an anonymity guarantee. Never store passwords,\naccess tokens, refresh tokens, or other credentials in these fields.\n\n## Contact information\n\nThis contract does not define another address book. A local type can also\nimplement `mdbase.contact` for compact contact semantics, or\n`mdbase.jscontact.card` when it intentionally stores that interchange shape.\nThe starter Person type implements both Person and Contact.\n" - }, - { - "source": "schemas/mdbase.contact/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://mdbase.dev/contracts/schemas/mdbase.contact/1.0.0.schema.json\",\n \"title\": \"Contact\",\n \"description\": \"A compact application-facing contact view.\",\n \"type\": \"object\",\n \"required\": [\"name\"],\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"The name applications should use when presenting this contact.\"\n },\n \"kind\": {\n \"type\": \"string\",\n \"enum\": [\"individual\", \"organisation\", \"group\"],\n \"description\": \"The broad kind of contact when the collection distinguishes it.\"\n },\n \"primary_email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"description\": \"The preferred email address for this contact.\"\n },\n \"primary_phone\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"The preferred telephone number for this contact.\"\n },\n \"organisation\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"The organisation most closely associated with this contact.\"\n },\n \"birthday\": {\n \"type\": \"string\",\n \"format\": \"date\",\n \"description\": \"The contact's birthday when known.\"\n }\n },\n \"additionalProperties\": false\n}\n" - }, - { - "source": "contracts/mdbase.contact/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.contact\nversion: 1.0.0\nname: Contact\ndescription: A compact application-facing view of a person or organisation.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.contact/1.0.0.schema.json\n---\n\n# Contact\n\nThis contract exposes the small set of contact semantics commonly shared by\naddress books, relationship tools, and other applications. A collection keeps\nits own field names and may store richer local data; the implementing type maps\nonly the fields it wants applications to see.\n\nThe contract is deliberately not an interchange format. Exporters can convert\nthis view to JSContact, vCard, or another wire representation without requiring\nMarkdown records to store that representation directly.\n" - }, - { - "source": "types/person/3.md", - "document": "---\nkind: mdbase.type\nname: person\nversion: 3\ndescription: An individual that other notes link to, with a collection-owned display name and optional contact details and account associations.\nmatch:\n where:\n type: person\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: Person\n description: One person represented by an ordinary note. Contact details and account associations are optional; this record never grants access or membership.\n type: object\n required: [name]\n properties:\n name:\n type: string\n minLength: 1\n pattern: '\\S'\n description: The display name to use in this collection. Use a full name, preferred name, or single name as appropriate; no first/last-name split is required. It can differ from an account's name and is not automatically synchronised with it.\n identities:\n type: array\n description: Optional accounts associated with this person, each identified by an exact issuer and subject pair. Omit this field for someone without an account. These editable associations help applications find your person record; they are not proof of identity and never grant access. Avoid linking the same account to multiple person notes.\n uniqueItems: true\n items:\n type: object\n description: One account association supplied by its identity service. Both issuer and subject must match exactly; never infer them from a name or email.\n required: [issuer, subject]\n properties:\n issuer:\n type: string\n format: uri\n pattern: '^https?://'\n description: The exact identity-service issuer URL reported for this account. Preserve its scheme, case, path, and trailing slash; do not guess it from the collection's hosting address.\n subject:\n type: string\n pattern: '\\S'\n description: The opaque account identifier reported by that issuer, not a display name, email, password, or access token. Copy it exactly; a different issuer may use the same subject for a different account.\n additionalProperties: false\n kind:\n const: individual\n default: individual\n description: This Person starter represents an individual. The organisation field describes their affiliation, not a different record kind. Existing organisation or group contacts can keep their own Contact-compatible type.\n email:\n type: string\n format: email\n description: The preferred email address for contacting this person. Optional contact information only; it does not establish an account association or grant access.\n phone:\n type: string\n minLength: 1\n description: The preferred telephone number, stored as text so country codes, formatting, and extensions can be preserved. Include a country code when useful; omit if unknown.\n organisation:\n type: string\n minLength: 1\n description: The person's main affiliation, such as an employer, school, or community. A collection-owned display label, not a membership or access-control setting; omit if not relevant.\n birthday:\n type: string\n format: date\n description: A known birthday as a full calendar date in YYYY-MM-DD form. Omit if unknown or if only the month and day are known; do not invent a year. Consider whether this collection needs this personal information.\n additionalProperties: true\ncollection:\n display:\n name_field: name\n description_field: organisation\n icon: user\nimplements:\n - contract: mdbase.person\n version: 2.0.0\n fields:\n name: name\n identities: identities\n - contract: mdbase.contact\n version: 1.0.0\n fields:\n name: name\n kind: kind\n primary_email: email\n primary_phone: phone\n organisation: organisation\n birthday: birthday\n---\n\n# Person\n\nUse one note per individual, whether or not they have a Connect account. This\nsingle type supplies both a Person record and optional Contact details. You do\nnot need a second Contact note for the same person.\n\n## Start with a name\n\n```yaml\ntype: person\nname: Alex Rivera\n```\n\nOther notes refer to this person with an ordinary link to this note, such as\n`[[Alex Rivera]]` in a task's `assignees`. Links to this note appear in its\nbacklinks. Rename or move the note with a tool that updates references, as mdbase\nand Obsidian do, so those links stay current. Reusing a person's file name for\nsomebody else redirects existing links to the wrong person.\n\nThe name is your collection's display label. Full names, preferred names and\nsingle names are equally valid. There is no required first-name/last-name split.\n\n## Add only the contact details you need\n\nEmail, phone, organisation and birthday are optional. Omit unknown values rather\nthan filling them with empty strings or guesses. Store phone numbers as text,\nincluding an international prefix or extension when helpful. Birthday currently\nrequires a complete date; partial dates need a separately configured local field.\nKeep free-form context in the Markdown body and be deliberate about sensitive\npersonal information in shared collections.\n\nThis starter describes individuals. Existing organisation and group records can\ncontinue using their Contact-compatible type; setting someone's affiliation does\nnot turn their Person note into an organisation record.\n\n## Link accounts deliberately\n\nThe editor's **Link this record to me** action uses the authenticated account's\nactual issuer and subject. If configuring these manually, copy both exact values\nfrom the identity service. Do not guess them from an email, display name, or the\nserver hosting this collection. Multiple entries may represent the same person\nat different identity services. Omit `identities` when there is no account to link.\n\nAssociations are ordinary editable data, not authentication or proof of identity.\nLinking never invites someone, grants access, or changes collection membership.\nNever put credentials in a person record. Avoid linking the same account from\nseveral notes: applications should report ambiguity, not guess which\nrecord to use. Account deletion or recreation is not permission to reassign an\nold association automatically.\n\n## Keep the collection's own shape\n\nThe inline schema belongs to this collection. You may add local fields, or rename\nfields and update their explicit `implements` mappings. Apps use those mappings\nfor the Person and Contact contracts; they need not assume your local field names.\nAdditional fields remain part of the note but do not automatically become shared\ncontract fields. Do not edit published contracts to customise this type.\n\nInstalling a newer starter does not overwrite an existing customised type or\nmigrate your address book. Converting an existing individual Contact to Person\nshould be a reviewed edit of that one note, preserving its path, fields and body.\n" - } - ], - "provides": [ - { - "id": "mdbase.person", - "version": "2.0.0", - "digest": "sha256:f16c462a1fd422f44ed055002f8476ec53c164107647fec782aeb74adeab2f9d" - }, - { - "id": "mdbase.contact", - "version": "1.0.0", - "digest": "sha256:49cfe15403dfc741a693e89a2f4d2857de306f391d02cb03e67bfaf0aa1d6b0d" - } - ] -} diff --git a/public/contracts/packs/mdbase.jscontact/2.0.0.json b/public/contracts/packs/mdbase.jscontact/2.0.0.json deleted file mode 100644 index 19649f6..0000000 --- a/public/contracts/packs/mdbase.jscontact/2.0.0.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "manifest": { - "kind": "mdbase.type-pack", - "id": "mdbase.jscontact", - "version": "2.0.0", - "name": "JSContact 2.0 starter", - "description": "The mdbase JSContact Card core contract and a direct Markdown implementation.", - "resources": [ - { - "kind": "schema", - "source": "schemas/mdbase.jscontact.card/2.0.0.schema.json", - "target": "schemas/mdbase.jscontact.card/2.0.0.schema.json", - "digest": "sha256:e2831b1203303075767aefd5e4892c81793d4b85c45db706ef189aa6124f8e26" - }, - { - "kind": "contract", - "source": "contracts/mdbase.jscontact.card/2.0.0.md", - "target": "_contracts/mdbase.jscontact.card/2.0.0.md", - "digest": "sha256:c56c5acbf7992155d6890294842a261fe80a933ec75a226ea875b97ba57dcaa2" - }, - { - "kind": "type", - "source": "types/jscontact-card/1.md", - "target": "_types/jscontact-card.md", - "digest": "sha256:f451dede981c030b2ce030d8c6e5d9c2de7f9e64654cb1c33d3253492e9d3d03" - } - ] - }, - "resources": [ - { - "source": "schemas/mdbase.jscontact.card/2.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://mdbase.dev/contracts/schemas/mdbase.jscontact.card/2.0.0.schema.json\",\n \"title\": \"JSContact Card 2.0 core profile\",\n \"description\": \"A strict mdbase core profile of an IETF JSContact 2.0 Card.\",\n \"type\": \"object\",\n \"required\": [\"@type\", \"version\"],\n \"properties\": {\n \"@type\": { \"const\": \"Card\" },\n \"version\": { \"const\": \"2.0\" },\n \"uid\": { \"type\": \"string\", \"minLength\": 1 },\n \"kind\": {\n \"enum\": [\"individual\", \"group\", \"org\", \"location\", \"device\", \"application\"]\n },\n \"name\": { \"$ref\": \"#/$defs/name\" },\n \"emails\": {\n \"type\": \"object\",\n \"propertyNames\": { \"$ref\": \"#/$defs/id\" },\n \"additionalProperties\": { \"$ref\": \"#/$defs/emailAddress\" }\n },\n \"phones\": {\n \"type\": \"object\",\n \"propertyNames\": { \"$ref\": \"#/$defs/id\" },\n \"additionalProperties\": { \"$ref\": \"#/$defs/phone\" }\n },\n \"organizations\": {\n \"type\": \"object\",\n \"propertyNames\": { \"$ref\": \"#/$defs/id\" },\n \"additionalProperties\": { \"$ref\": \"#/$defs/organization\" }\n },\n \"notes\": {\n \"type\": \"object\",\n \"propertyNames\": { \"$ref\": \"#/$defs/id\" },\n \"additionalProperties\": { \"$ref\": \"#/$defs/note\" }\n }\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"trueSet\": {\n \"type\": \"object\",\n \"additionalProperties\": { \"const\": true }\n },\n \"name\": {\n \"type\": \"object\",\n \"properties\": {\n \"@type\": { \"const\": \"Name\" },\n \"components\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"contains\": {\n \"type\": \"object\",\n \"required\": [\"kind\"],\n \"properties\": {\n \"kind\": { \"not\": { \"const\": \"separator\" } }\n }\n },\n \"items\": { \"$ref\": \"#/$defs/nameComponent\" }\n },\n \"full\": { \"type\": \"string\", \"minLength\": 1 },\n \"isOrdered\": { \"type\": \"boolean\" },\n \"defaultSeparator\": { \"type\": \"string\" }\n },\n \"anyOf\": [\n { \"required\": [\"components\"] },\n { \"required\": [\"full\"] }\n ],\n \"additionalProperties\": false\n },\n \"nameComponent\": {\n \"type\": \"object\",\n \"required\": [\"kind\", \"value\"],\n \"properties\": {\n \"@type\": { \"const\": \"NameComponent\" },\n \"kind\": {\n \"enum\": [\n \"credential\",\n \"generation\",\n \"given\",\n \"given2\",\n \"separator\",\n \"surname\",\n \"surname2\",\n \"title\"\n ]\n },\n \"value\": { \"type\": \"string\" }\n },\n \"additionalProperties\": false\n },\n \"emailAddress\": {\n \"type\": \"object\",\n \"required\": [\"address\"],\n \"properties\": {\n \"@type\": { \"const\": \"EmailAddress\" },\n \"address\": { \"type\": \"string\", \"format\": \"email\" },\n \"contexts\": { \"$ref\": \"#/$defs/trueSet\" },\n \"pref\": { \"type\": \"integer\", \"minimum\": 1 },\n \"label\": { \"type\": \"string\" }\n },\n \"additionalProperties\": false\n },\n \"phone\": {\n \"type\": \"object\",\n \"required\": [\"number\"],\n \"properties\": {\n \"@type\": { \"const\": \"Phone\" },\n \"number\": { \"type\": \"string\", \"minLength\": 1 },\n \"features\": { \"$ref\": \"#/$defs/trueSet\" },\n \"contexts\": { \"$ref\": \"#/$defs/trueSet\" },\n \"pref\": { \"type\": \"integer\", \"minimum\": 1 },\n \"label\": { \"type\": \"string\" }\n },\n \"additionalProperties\": false\n },\n \"organization\": {\n \"type\": \"object\",\n \"properties\": {\n \"@type\": { \"const\": \"Organization\" },\n \"name\": { \"type\": \"string\", \"minLength\": 1 },\n \"units\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": { \"$ref\": \"#/$defs/orgUnit\" }\n },\n \"sortAs\": { \"type\": \"string\" },\n \"contexts\": { \"$ref\": \"#/$defs/trueSet\" }\n },\n \"anyOf\": [\n { \"required\": [\"name\"] },\n { \"required\": [\"units\"] }\n ],\n \"additionalProperties\": false\n },\n \"orgUnit\": {\n \"type\": \"object\",\n \"required\": [\"name\"],\n \"properties\": {\n \"@type\": { \"const\": \"OrgUnit\" },\n \"name\": { \"type\": \"string\", \"minLength\": 1 }\n },\n \"additionalProperties\": false\n },\n \"note\": {\n \"type\": \"object\",\n \"required\": [\"note\"],\n \"properties\": {\n \"@type\": { \"const\": \"Note\" },\n \"note\": { \"type\": \"string\" },\n \"created\": { \"type\": \"string\", \"format\": \"date-time\" }\n },\n \"additionalProperties\": false\n }\n }\n}\n\n" - }, - { - "source": "contracts/mdbase.jscontact.card/2.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.jscontact.card\nversion: 2.0.0\nname: JSContact Card 2.0 core\ndescription: A strict, portable core profile of an IETF JSContact 2.0 Card.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.jscontact.card/2.0.0.schema.json\nx-standard:\n name: JSContact\n version: \"2.0\"\n scope: Strict core profile covering the Card envelope, names, email addresses, phones, organizations, and notes.\n references:\n - https://www.rfc-editor.org/rfc/rfc9553.html\n - https://www.rfc-editor.org/rfc/rfc9982.html\n---\n\n# JSContact Card 2.0 core\n\nThis contract provides a deliberately bounded JSContact Card representation\nfor interoperable contact records. It follows JSContact 2.0, including the\noptional `uid` introduced by RFC 9982.\n\nThe profile accepts a strict subset of JSContact properties. It is not an\nofficial IETF JSON Schema and does not claim to validate every JSContact\nextension or conditional semantic rule.\n\n" - }, - { - "source": "types/jscontact-card/1.md", - "document": "---\nkind: mdbase.type\nname: jscontact-card\nversion: 1\ndescription: A Markdown-backed JSContact 2.0 core Card\nmatch:\n where:\n /@type: Card\n version: \"2.0\"\nschema:\n dialect: json-schema-2020-12\n ref: ../schemas/mdbase.jscontact.card/2.0.0.schema.json\ncollection:\n display:\n name_field: /name/full\nimplements:\n - contract: mdbase.jscontact.card\n version: 2.0.0\n fields:\n /@type: /@type\n version: version\n uid: uid\n kind: kind\n name: name\n emails: emails\n phones: phones\n organizations: organizations\n notes: notes\n---\n\n# JSContact Card\n\nThis starter type stores the strict core profile directly in Markdown\nfrontmatter. Records identify themselves with:\n\n```yaml\n\"@type\": Card\nversion: \"2.0\"\n```\n\nThe Markdown body remains available for unstructured context that is not part\nof the portable JSContact view.\n\n" - } - ], - "provides": [ - { - "id": "mdbase.jscontact.card", - "version": "2.0.0" - } - ] -} diff --git a/public/contracts/packs/mdbase.jscontact/2.0.1.json b/public/contracts/packs/mdbase.jscontact/2.0.1.json deleted file mode 100644 index 39a389a..0000000 --- a/public/contracts/packs/mdbase.jscontact/2.0.1.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "manifest": { - "kind": "mdbase.type-pack", - "id": "mdbase.jscontact", - "version": "2.0.1", - "name": "JSContact 2.0 starter", - "description": "The mdbase JSContact Card core contract and an editable Markdown implementation.", - "resources": [ - { - "kind": "schema", - "source": "schemas/mdbase.jscontact.card/2.0.0.schema.json", - "target": "schemas/mdbase.jscontact.card/2.0.0.schema.json", - "digest": "sha256:e2831b1203303075767aefd5e4892c81793d4b85c45db706ef189aa6124f8e26" - }, - { - "kind": "contract", - "source": "contracts/mdbase.jscontact.card/2.0.0.md", - "target": "_contracts/mdbase.jscontact.card/2.0.0.md", - "digest": "sha256:c56c5acbf7992155d6890294842a261fe80a933ec75a226ea875b97ba57dcaa2" - }, - { - "kind": "type", - "source": "types/jscontact-card/2.md", - "target": "_types/jscontact-card.md", - "digest": "sha256:daa85fda0de4b95e51b01ca6de7fef17041fadb416b6fc540dd35d7da2627d6e" - } - ] - }, - "resources": [ - { - "source": "schemas/mdbase.jscontact.card/2.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://mdbase.dev/contracts/schemas/mdbase.jscontact.card/2.0.0.schema.json\",\n \"title\": \"JSContact Card 2.0 core profile\",\n \"description\": \"A strict mdbase core profile of an IETF JSContact 2.0 Card.\",\n \"type\": \"object\",\n \"required\": [\"@type\", \"version\"],\n \"properties\": {\n \"@type\": { \"const\": \"Card\" },\n \"version\": { \"const\": \"2.0\" },\n \"uid\": { \"type\": \"string\", \"minLength\": 1 },\n \"kind\": {\n \"enum\": [\"individual\", \"group\", \"org\", \"location\", \"device\", \"application\"]\n },\n \"name\": { \"$ref\": \"#/$defs/name\" },\n \"emails\": {\n \"type\": \"object\",\n \"propertyNames\": { \"$ref\": \"#/$defs/id\" },\n \"additionalProperties\": { \"$ref\": \"#/$defs/emailAddress\" }\n },\n \"phones\": {\n \"type\": \"object\",\n \"propertyNames\": { \"$ref\": \"#/$defs/id\" },\n \"additionalProperties\": { \"$ref\": \"#/$defs/phone\" }\n },\n \"organizations\": {\n \"type\": \"object\",\n \"propertyNames\": { \"$ref\": \"#/$defs/id\" },\n \"additionalProperties\": { \"$ref\": \"#/$defs/organization\" }\n },\n \"notes\": {\n \"type\": \"object\",\n \"propertyNames\": { \"$ref\": \"#/$defs/id\" },\n \"additionalProperties\": { \"$ref\": \"#/$defs/note\" }\n }\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"trueSet\": {\n \"type\": \"object\",\n \"additionalProperties\": { \"const\": true }\n },\n \"name\": {\n \"type\": \"object\",\n \"properties\": {\n \"@type\": { \"const\": \"Name\" },\n \"components\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"contains\": {\n \"type\": \"object\",\n \"required\": [\"kind\"],\n \"properties\": {\n \"kind\": { \"not\": { \"const\": \"separator\" } }\n }\n },\n \"items\": { \"$ref\": \"#/$defs/nameComponent\" }\n },\n \"full\": { \"type\": \"string\", \"minLength\": 1 },\n \"isOrdered\": { \"type\": \"boolean\" },\n \"defaultSeparator\": { \"type\": \"string\" }\n },\n \"anyOf\": [\n { \"required\": [\"components\"] },\n { \"required\": [\"full\"] }\n ],\n \"additionalProperties\": false\n },\n \"nameComponent\": {\n \"type\": \"object\",\n \"required\": [\"kind\", \"value\"],\n \"properties\": {\n \"@type\": { \"const\": \"NameComponent\" },\n \"kind\": {\n \"enum\": [\n \"credential\",\n \"generation\",\n \"given\",\n \"given2\",\n \"separator\",\n \"surname\",\n \"surname2\",\n \"title\"\n ]\n },\n \"value\": { \"type\": \"string\" }\n },\n \"additionalProperties\": false\n },\n \"emailAddress\": {\n \"type\": \"object\",\n \"required\": [\"address\"],\n \"properties\": {\n \"@type\": { \"const\": \"EmailAddress\" },\n \"address\": { \"type\": \"string\", \"format\": \"email\" },\n \"contexts\": { \"$ref\": \"#/$defs/trueSet\" },\n \"pref\": { \"type\": \"integer\", \"minimum\": 1 },\n \"label\": { \"type\": \"string\" }\n },\n \"additionalProperties\": false\n },\n \"phone\": {\n \"type\": \"object\",\n \"required\": [\"number\"],\n \"properties\": {\n \"@type\": { \"const\": \"Phone\" },\n \"number\": { \"type\": \"string\", \"minLength\": 1 },\n \"features\": { \"$ref\": \"#/$defs/trueSet\" },\n \"contexts\": { \"$ref\": \"#/$defs/trueSet\" },\n \"pref\": { \"type\": \"integer\", \"minimum\": 1 },\n \"label\": { \"type\": \"string\" }\n },\n \"additionalProperties\": false\n },\n \"organization\": {\n \"type\": \"object\",\n \"properties\": {\n \"@type\": { \"const\": \"Organization\" },\n \"name\": { \"type\": \"string\", \"minLength\": 1 },\n \"units\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": { \"$ref\": \"#/$defs/orgUnit\" }\n },\n \"sortAs\": { \"type\": \"string\" },\n \"contexts\": { \"$ref\": \"#/$defs/trueSet\" }\n },\n \"anyOf\": [\n { \"required\": [\"name\"] },\n { \"required\": [\"units\"] }\n ],\n \"additionalProperties\": false\n },\n \"orgUnit\": {\n \"type\": \"object\",\n \"required\": [\"name\"],\n \"properties\": {\n \"@type\": { \"const\": \"OrgUnit\" },\n \"name\": { \"type\": \"string\", \"minLength\": 1 }\n },\n \"additionalProperties\": false\n },\n \"note\": {\n \"type\": \"object\",\n \"required\": [\"note\"],\n \"properties\": {\n \"@type\": { \"const\": \"Note\" },\n \"note\": { \"type\": \"string\" },\n \"created\": { \"type\": \"string\", \"format\": \"date-time\" }\n },\n \"additionalProperties\": false\n }\n }\n}\n\n" - }, - { - "source": "contracts/mdbase.jscontact.card/2.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.jscontact.card\nversion: 2.0.0\nname: JSContact Card 2.0 core\ndescription: A strict, portable core profile of an IETF JSContact 2.0 Card.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.jscontact.card/2.0.0.schema.json\nx-standard:\n name: JSContact\n version: \"2.0\"\n scope: Strict core profile covering the Card envelope, names, email addresses, phones, organizations, and notes.\n references:\n - https://www.rfc-editor.org/rfc/rfc9553.html\n - https://www.rfc-editor.org/rfc/rfc9982.html\n---\n\n# JSContact Card 2.0 core\n\nThis contract provides a deliberately bounded JSContact Card representation\nfor interoperable contact records. It follows JSContact 2.0, including the\noptional `uid` introduced by RFC 9982.\n\nThe profile accepts a strict subset of JSContact properties. It is not an\nofficial IETF JSON Schema and does not claim to validate every JSContact\nextension or conditional semantic rule.\n\n" - }, - { - "source": "types/jscontact-card/2.md", - "document": "---\nkind: mdbase.type\nname: jscontact-card\nversion: 2\ndescription: An editable Markdown-backed JSContact 2.0 core Card\nmatch:\n where:\n /@type: Card\n version: \"2.0\"\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: JSContact Card 2.0 core profile\n description: A local starting shape for an IETF JSContact 2.0 Card.\n type: object\n required:\n - \"@type\"\n - version\n properties:\n \"@type\":\n const: Card\n version:\n const: \"2.0\"\n uid:\n type: string\n minLength: 1\n kind:\n enum:\n - individual\n - group\n - org\n - location\n - device\n - application\n name:\n $ref: \"#/$defs/name\"\n emails:\n type: object\n propertyNames:\n $ref: \"#/$defs/id\"\n additionalProperties:\n $ref: \"#/$defs/emailAddress\"\n phones:\n type: object\n propertyNames:\n $ref: \"#/$defs/id\"\n additionalProperties:\n $ref: \"#/$defs/phone\"\n organizations:\n type: object\n propertyNames:\n $ref: \"#/$defs/id\"\n additionalProperties:\n $ref: \"#/$defs/organization\"\n notes:\n type: object\n propertyNames:\n $ref: \"#/$defs/id\"\n additionalProperties:\n $ref: \"#/$defs/note\"\n additionalProperties: false\n $defs:\n id:\n type: string\n minLength: 1\n trueSet:\n type: object\n additionalProperties:\n const: true\n name:\n type: object\n properties:\n \"@type\":\n const: Name\n components:\n type: array\n minItems: 1\n contains:\n type: object\n required:\n - kind\n properties:\n kind:\n not:\n const: separator\n items:\n $ref: \"#/$defs/nameComponent\"\n full:\n type: string\n minLength: 1\n isOrdered:\n type: boolean\n defaultSeparator:\n type: string\n anyOf:\n - required:\n - components\n - required:\n - full\n additionalProperties: false\n nameComponent:\n type: object\n required:\n - kind\n - value\n properties:\n \"@type\":\n const: NameComponent\n kind:\n enum:\n - credential\n - generation\n - given\n - given2\n - separator\n - surname\n - surname2\n - title\n value:\n type: string\n additionalProperties: false\n emailAddress:\n type: object\n required:\n - address\n properties:\n \"@type\":\n const: EmailAddress\n address:\n type: string\n format: email\n contexts:\n $ref: \"#/$defs/trueSet\"\n pref:\n type: integer\n minimum: 1\n label:\n type: string\n additionalProperties: false\n phone:\n type: object\n required:\n - number\n properties:\n \"@type\":\n const: Phone\n number:\n type: string\n minLength: 1\n features:\n $ref: \"#/$defs/trueSet\"\n contexts:\n $ref: \"#/$defs/trueSet\"\n pref:\n type: integer\n minimum: 1\n label:\n type: string\n additionalProperties: false\n organization:\n type: object\n properties:\n \"@type\":\n const: Organization\n name:\n type: string\n minLength: 1\n units:\n type: array\n minItems: 1\n items:\n $ref: \"#/$defs/orgUnit\"\n sortAs:\n type: string\n contexts:\n $ref: \"#/$defs/trueSet\"\n anyOf:\n - required:\n - name\n - required:\n - units\n additionalProperties: false\n orgUnit:\n type: object\n required:\n - name\n properties:\n \"@type\":\n const: OrgUnit\n name:\n type: string\n minLength: 1\n additionalProperties: false\n note:\n type: object\n required:\n - note\n properties:\n \"@type\":\n const: Note\n note:\n type: string\n created:\n type: string\n format: date-time\n additionalProperties: false\ncollection:\n display:\n name_field: /name/full\nimplements:\n - contract: mdbase.jscontact.card\n version: 2.0.0\n fields:\n /@type: /@type\n version: version\n uid: uid\n kind: kind\n name: name\n emails: emails\n phones: phones\n organizations: organizations\n notes: notes\n---\n\n# JSContact Card\n\nThis starter type begins as a local copy of the JSContact core profile. Its\nfields belong to the collection and can be added, renamed, or reshaped. Update\nthe explicit contract mapping whenever a compatible field moves.\n\nThe separately installed contract schema remains the portable boundary. Local\nfields that are not mapped into that boundary remain collection-specific.\n" - } - ], - "provides": [ - { - "id": "mdbase.jscontact.card", - "version": "2.0.0" - } - ] -} diff --git a/public/contracts/packs/mdbase.jscontact/2.0.2.json b/public/contracts/packs/mdbase.jscontact/2.0.2.json deleted file mode 100644 index 81459ab..0000000 --- a/public/contracts/packs/mdbase.jscontact/2.0.2.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "manifest": { - "kind": "mdbase.type-pack", - "id": "mdbase.jscontact", - "version": "2.0.2", - "name": "JSContact 2.0 starter", - "description": "The mdbase JSContact Card core contract and a fully expanded, editable Markdown implementation.", - "resources": [ - { - "kind": "schema", - "source": "schemas/mdbase.jscontact.card/2.0.0.schema.json", - "target": "schemas/mdbase.jscontact.card/2.0.0.schema.json", - "digest": "sha256:e2831b1203303075767aefd5e4892c81793d4b85c45db706ef189aa6124f8e26" - }, - { - "kind": "contract", - "source": "contracts/mdbase.jscontact.card/2.0.0.md", - "target": "_contracts/mdbase.jscontact.card/2.0.0.md", - "digest": "sha256:c56c5acbf7992155d6890294842a261fe80a933ec75a226ea875b97ba57dcaa2" - }, - { - "kind": "type", - "source": "types/jscontact-card/3.md", - "target": "_types/jscontact-card.md", - "digest": "sha256:881d5669053430b5183f57d51d8a3c41d53145ac158a638379163d5bb83c469d" - } - ] - }, - "resources": [ - { - "source": "schemas/mdbase.jscontact.card/2.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://mdbase.dev/contracts/schemas/mdbase.jscontact.card/2.0.0.schema.json\",\n \"title\": \"JSContact Card 2.0 core profile\",\n \"description\": \"A strict mdbase core profile of an IETF JSContact 2.0 Card.\",\n \"type\": \"object\",\n \"required\": [\"@type\", \"version\"],\n \"properties\": {\n \"@type\": { \"const\": \"Card\" },\n \"version\": { \"const\": \"2.0\" },\n \"uid\": { \"type\": \"string\", \"minLength\": 1 },\n \"kind\": {\n \"enum\": [\"individual\", \"group\", \"org\", \"location\", \"device\", \"application\"]\n },\n \"name\": { \"$ref\": \"#/$defs/name\" },\n \"emails\": {\n \"type\": \"object\",\n \"propertyNames\": { \"$ref\": \"#/$defs/id\" },\n \"additionalProperties\": { \"$ref\": \"#/$defs/emailAddress\" }\n },\n \"phones\": {\n \"type\": \"object\",\n \"propertyNames\": { \"$ref\": \"#/$defs/id\" },\n \"additionalProperties\": { \"$ref\": \"#/$defs/phone\" }\n },\n \"organizations\": {\n \"type\": \"object\",\n \"propertyNames\": { \"$ref\": \"#/$defs/id\" },\n \"additionalProperties\": { \"$ref\": \"#/$defs/organization\" }\n },\n \"notes\": {\n \"type\": \"object\",\n \"propertyNames\": { \"$ref\": \"#/$defs/id\" },\n \"additionalProperties\": { \"$ref\": \"#/$defs/note\" }\n }\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"trueSet\": {\n \"type\": \"object\",\n \"additionalProperties\": { \"const\": true }\n },\n \"name\": {\n \"type\": \"object\",\n \"properties\": {\n \"@type\": { \"const\": \"Name\" },\n \"components\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"contains\": {\n \"type\": \"object\",\n \"required\": [\"kind\"],\n \"properties\": {\n \"kind\": { \"not\": { \"const\": \"separator\" } }\n }\n },\n \"items\": { \"$ref\": \"#/$defs/nameComponent\" }\n },\n \"full\": { \"type\": \"string\", \"minLength\": 1 },\n \"isOrdered\": { \"type\": \"boolean\" },\n \"defaultSeparator\": { \"type\": \"string\" }\n },\n \"anyOf\": [\n { \"required\": [\"components\"] },\n { \"required\": [\"full\"] }\n ],\n \"additionalProperties\": false\n },\n \"nameComponent\": {\n \"type\": \"object\",\n \"required\": [\"kind\", \"value\"],\n \"properties\": {\n \"@type\": { \"const\": \"NameComponent\" },\n \"kind\": {\n \"enum\": [\n \"credential\",\n \"generation\",\n \"given\",\n \"given2\",\n \"separator\",\n \"surname\",\n \"surname2\",\n \"title\"\n ]\n },\n \"value\": { \"type\": \"string\" }\n },\n \"additionalProperties\": false\n },\n \"emailAddress\": {\n \"type\": \"object\",\n \"required\": [\"address\"],\n \"properties\": {\n \"@type\": { \"const\": \"EmailAddress\" },\n \"address\": { \"type\": \"string\", \"format\": \"email\" },\n \"contexts\": { \"$ref\": \"#/$defs/trueSet\" },\n \"pref\": { \"type\": \"integer\", \"minimum\": 1 },\n \"label\": { \"type\": \"string\" }\n },\n \"additionalProperties\": false\n },\n \"phone\": {\n \"type\": \"object\",\n \"required\": [\"number\"],\n \"properties\": {\n \"@type\": { \"const\": \"Phone\" },\n \"number\": { \"type\": \"string\", \"minLength\": 1 },\n \"features\": { \"$ref\": \"#/$defs/trueSet\" },\n \"contexts\": { \"$ref\": \"#/$defs/trueSet\" },\n \"pref\": { \"type\": \"integer\", \"minimum\": 1 },\n \"label\": { \"type\": \"string\" }\n },\n \"additionalProperties\": false\n },\n \"organization\": {\n \"type\": \"object\",\n \"properties\": {\n \"@type\": { \"const\": \"Organization\" },\n \"name\": { \"type\": \"string\", \"minLength\": 1 },\n \"units\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": { \"$ref\": \"#/$defs/orgUnit\" }\n },\n \"sortAs\": { \"type\": \"string\" },\n \"contexts\": { \"$ref\": \"#/$defs/trueSet\" }\n },\n \"anyOf\": [\n { \"required\": [\"name\"] },\n { \"required\": [\"units\"] }\n ],\n \"additionalProperties\": false\n },\n \"orgUnit\": {\n \"type\": \"object\",\n \"required\": [\"name\"],\n \"properties\": {\n \"@type\": { \"const\": \"OrgUnit\" },\n \"name\": { \"type\": \"string\", \"minLength\": 1 }\n },\n \"additionalProperties\": false\n },\n \"note\": {\n \"type\": \"object\",\n \"required\": [\"note\"],\n \"properties\": {\n \"@type\": { \"const\": \"Note\" },\n \"note\": { \"type\": \"string\" },\n \"created\": { \"type\": \"string\", \"format\": \"date-time\" }\n },\n \"additionalProperties\": false\n }\n }\n}\n\n" - }, - { - "source": "contracts/mdbase.jscontact.card/2.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.jscontact.card\nversion: 2.0.0\nname: JSContact Card 2.0 core\ndescription: A strict, portable core profile of an IETF JSContact 2.0 Card.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.jscontact.card/2.0.0.schema.json\nx-standard:\n name: JSContact\n version: \"2.0\"\n scope: Strict core profile covering the Card envelope, names, email addresses, phones, organizations, and notes.\n references:\n - https://www.rfc-editor.org/rfc/rfc9553.html\n - https://www.rfc-editor.org/rfc/rfc9982.html\n---\n\n# JSContact Card 2.0 core\n\nThis contract provides a deliberately bounded JSContact Card representation\nfor interoperable contact records. It follows JSContact 2.0, including the\noptional `uid` introduced by RFC 9982.\n\nThe profile accepts a strict subset of JSContact properties. It is not an\nofficial IETF JSON Schema and does not claim to validate every JSContact\nextension or conditional semantic rule.\n\n" - }, - { - "source": "types/jscontact-card/3.md", - "document": "---\nkind: mdbase.type\nname: jscontact-card\nversion: 3\ndescription: A fully expanded, editable Markdown-backed JSContact 2.0 core Card\nmatch:\n where:\n /@type: Card\n version: \"2.0\"\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: JSContact Card 2.0 core profile\n description: A local starting shape for an IETF JSContact 2.0 Card.\n type: object\n required:\n - \"@type\"\n - version\n properties:\n \"@type\":\n const: Card\n version:\n const: \"2.0\"\n uid:\n type: string\n minLength: 1\n kind:\n enum:\n - individual\n - group\n - org\n - location\n - device\n - application\n name:\n type: object\n properties:\n \"@type\":\n const: Name\n components:\n type: array\n minItems: 1\n contains:\n type: object\n required:\n - kind\n properties:\n kind:\n not:\n const: separator\n items:\n type: object\n required:\n - kind\n - value\n properties:\n \"@type\":\n const: NameComponent\n kind:\n enum:\n - credential\n - generation\n - given\n - given2\n - separator\n - surname\n - surname2\n - title\n value:\n type: string\n additionalProperties: false\n full:\n type: string\n minLength: 1\n isOrdered:\n type: boolean\n defaultSeparator:\n type: string\n anyOf:\n - required:\n - components\n - required:\n - full\n additionalProperties: false\n emails:\n type: object\n propertyNames:\n type: string\n minLength: 1\n additionalProperties:\n type: object\n required:\n - address\n properties:\n \"@type\":\n const: EmailAddress\n address:\n type: string\n format: email\n contexts:\n type: object\n additionalProperties:\n const: true\n pref:\n type: integer\n minimum: 1\n label:\n type: string\n additionalProperties: false\n phones:\n type: object\n propertyNames:\n type: string\n minLength: 1\n additionalProperties:\n type: object\n required:\n - number\n properties:\n \"@type\":\n const: Phone\n number:\n type: string\n minLength: 1\n features:\n type: object\n additionalProperties:\n const: true\n contexts:\n type: object\n additionalProperties:\n const: true\n pref:\n type: integer\n minimum: 1\n label:\n type: string\n additionalProperties: false\n organizations:\n type: object\n propertyNames:\n type: string\n minLength: 1\n additionalProperties:\n type: object\n properties:\n \"@type\":\n const: Organization\n name:\n type: string\n minLength: 1\n units:\n type: array\n minItems: 1\n items:\n type: object\n required:\n - name\n properties:\n \"@type\":\n const: OrgUnit\n name:\n type: string\n minLength: 1\n additionalProperties: false\n sortAs:\n type: string\n contexts:\n type: object\n additionalProperties:\n const: true\n anyOf:\n - required:\n - name\n - required:\n - units\n additionalProperties: false\n notes:\n type: object\n propertyNames:\n type: string\n minLength: 1\n additionalProperties:\n type: object\n required:\n - note\n properties:\n \"@type\":\n const: Note\n note:\n type: string\n created:\n type: string\n format: date-time\n additionalProperties: false\n additionalProperties: false\ncollection:\n display:\n name_field: /name/full\nimplements:\n - contract: mdbase.jscontact.card\n version: 2.0.0\n fields:\n /@type: /@type\n version: version\n uid: uid\n kind: kind\n name: name\n emails: emails\n phones: phones\n organizations: organizations\n notes: notes\n---\n\n# JSContact Card\n\nThis starter type begins as a fully expanded local copy of the JSContact core\nprofile. Nested fields are declared inline so the type editor can edit them\ndirectly. Its fields belong to the collection and can be added, renamed, or\nreshaped. Update the explicit contract mapping whenever a compatible field\nmoves.\n\nThe separately installed contract schema remains the portable boundary. Local\nfields that are not mapped into that boundary remain collection-specific.\n" - } - ], - "provides": [ - { - "id": "mdbase.jscontact.card", - "version": "2.0.0" - } - ] -} diff --git a/public/contracts/packs/mdbase.jscontact/2.0.3.json b/public/contracts/packs/mdbase.jscontact/2.0.3.json deleted file mode 100644 index 7597779..0000000 --- a/public/contracts/packs/mdbase.jscontact/2.0.3.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "manifest": { - "kind": "mdbase.type-pack", - "id": "mdbase.jscontact", - "version": "2.0.3", - "name": "Contact type pack", - "description": "The mdbase JSContact Card core contract and a fully expanded, editable Contact type.", - "resources": [ - { - "kind": "schema", - "source": "schemas/mdbase.jscontact.card/2.0.0.schema.json", - "target": "schemas/mdbase.jscontact.card/2.0.0.schema.json", - "digest": "sha256:e2831b1203303075767aefd5e4892c81793d4b85c45db706ef189aa6124f8e26" - }, - { - "kind": "contract", - "source": "contracts/mdbase.jscontact.card/2.0.0.md", - "target": "_contracts/mdbase.jscontact.card/2.0.0.md", - "digest": "sha256:c56c5acbf7992155d6890294842a261fe80a933ec75a226ea875b97ba57dcaa2" - }, - { - "kind": "type", - "source": "types/contact/1.md", - "target": "_types/contact.md", - "digest": "sha256:3a7723ea8ad3e2bc1b10a33c2c77c974557df2471a91dea2c0db2e8e8a54e2ef" - } - ] - }, - "resources": [ - { - "source": "schemas/mdbase.jscontact.card/2.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://mdbase.dev/contracts/schemas/mdbase.jscontact.card/2.0.0.schema.json\",\n \"title\": \"JSContact Card 2.0 core profile\",\n \"description\": \"A strict mdbase core profile of an IETF JSContact 2.0 Card.\",\n \"type\": \"object\",\n \"required\": [\"@type\", \"version\"],\n \"properties\": {\n \"@type\": { \"const\": \"Card\" },\n \"version\": { \"const\": \"2.0\" },\n \"uid\": { \"type\": \"string\", \"minLength\": 1 },\n \"kind\": {\n \"enum\": [\"individual\", \"group\", \"org\", \"location\", \"device\", \"application\"]\n },\n \"name\": { \"$ref\": \"#/$defs/name\" },\n \"emails\": {\n \"type\": \"object\",\n \"propertyNames\": { \"$ref\": \"#/$defs/id\" },\n \"additionalProperties\": { \"$ref\": \"#/$defs/emailAddress\" }\n },\n \"phones\": {\n \"type\": \"object\",\n \"propertyNames\": { \"$ref\": \"#/$defs/id\" },\n \"additionalProperties\": { \"$ref\": \"#/$defs/phone\" }\n },\n \"organizations\": {\n \"type\": \"object\",\n \"propertyNames\": { \"$ref\": \"#/$defs/id\" },\n \"additionalProperties\": { \"$ref\": \"#/$defs/organization\" }\n },\n \"notes\": {\n \"type\": \"object\",\n \"propertyNames\": { \"$ref\": \"#/$defs/id\" },\n \"additionalProperties\": { \"$ref\": \"#/$defs/note\" }\n }\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"trueSet\": {\n \"type\": \"object\",\n \"additionalProperties\": { \"const\": true }\n },\n \"name\": {\n \"type\": \"object\",\n \"properties\": {\n \"@type\": { \"const\": \"Name\" },\n \"components\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"contains\": {\n \"type\": \"object\",\n \"required\": [\"kind\"],\n \"properties\": {\n \"kind\": { \"not\": { \"const\": \"separator\" } }\n }\n },\n \"items\": { \"$ref\": \"#/$defs/nameComponent\" }\n },\n \"full\": { \"type\": \"string\", \"minLength\": 1 },\n \"isOrdered\": { \"type\": \"boolean\" },\n \"defaultSeparator\": { \"type\": \"string\" }\n },\n \"anyOf\": [\n { \"required\": [\"components\"] },\n { \"required\": [\"full\"] }\n ],\n \"additionalProperties\": false\n },\n \"nameComponent\": {\n \"type\": \"object\",\n \"required\": [\"kind\", \"value\"],\n \"properties\": {\n \"@type\": { \"const\": \"NameComponent\" },\n \"kind\": {\n \"enum\": [\n \"credential\",\n \"generation\",\n \"given\",\n \"given2\",\n \"separator\",\n \"surname\",\n \"surname2\",\n \"title\"\n ]\n },\n \"value\": { \"type\": \"string\" }\n },\n \"additionalProperties\": false\n },\n \"emailAddress\": {\n \"type\": \"object\",\n \"required\": [\"address\"],\n \"properties\": {\n \"@type\": { \"const\": \"EmailAddress\" },\n \"address\": { \"type\": \"string\", \"format\": \"email\" },\n \"contexts\": { \"$ref\": \"#/$defs/trueSet\" },\n \"pref\": { \"type\": \"integer\", \"minimum\": 1 },\n \"label\": { \"type\": \"string\" }\n },\n \"additionalProperties\": false\n },\n \"phone\": {\n \"type\": \"object\",\n \"required\": [\"number\"],\n \"properties\": {\n \"@type\": { \"const\": \"Phone\" },\n \"number\": { \"type\": \"string\", \"minLength\": 1 },\n \"features\": { \"$ref\": \"#/$defs/trueSet\" },\n \"contexts\": { \"$ref\": \"#/$defs/trueSet\" },\n \"pref\": { \"type\": \"integer\", \"minimum\": 1 },\n \"label\": { \"type\": \"string\" }\n },\n \"additionalProperties\": false\n },\n \"organization\": {\n \"type\": \"object\",\n \"properties\": {\n \"@type\": { \"const\": \"Organization\" },\n \"name\": { \"type\": \"string\", \"minLength\": 1 },\n \"units\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": { \"$ref\": \"#/$defs/orgUnit\" }\n },\n \"sortAs\": { \"type\": \"string\" },\n \"contexts\": { \"$ref\": \"#/$defs/trueSet\" }\n },\n \"anyOf\": [\n { \"required\": [\"name\"] },\n { \"required\": [\"units\"] }\n ],\n \"additionalProperties\": false\n },\n \"orgUnit\": {\n \"type\": \"object\",\n \"required\": [\"name\"],\n \"properties\": {\n \"@type\": { \"const\": \"OrgUnit\" },\n \"name\": { \"type\": \"string\", \"minLength\": 1 }\n },\n \"additionalProperties\": false\n },\n \"note\": {\n \"type\": \"object\",\n \"required\": [\"note\"],\n \"properties\": {\n \"@type\": { \"const\": \"Note\" },\n \"note\": { \"type\": \"string\" },\n \"created\": { \"type\": \"string\", \"format\": \"date-time\" }\n },\n \"additionalProperties\": false\n }\n }\n}\n\n" - }, - { - "source": "contracts/mdbase.jscontact.card/2.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.jscontact.card\nversion: 2.0.0\nname: JSContact Card 2.0 core\ndescription: A strict, portable core profile of an IETF JSContact 2.0 Card.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.jscontact.card/2.0.0.schema.json\nx-standard:\n name: JSContact\n version: \"2.0\"\n scope: Strict core profile covering the Card envelope, names, email addresses, phones, organizations, and notes.\n references:\n - https://www.rfc-editor.org/rfc/rfc9553.html\n - https://www.rfc-editor.org/rfc/rfc9982.html\n---\n\n# JSContact Card 2.0 core\n\nThis contract provides a deliberately bounded JSContact Card representation\nfor interoperable contact records. It follows JSContact 2.0, including the\noptional `uid` introduced by RFC 9982.\n\nThe profile accepts a strict subset of JSContact properties. It is not an\nofficial IETF JSON Schema and does not claim to validate every JSContact\nextension or conditional semantic rule.\n\n" - }, - { - "source": "types/contact/1.md", - "document": "---\nkind: mdbase.type\nname: contact\nversion: 1\ndescription: A fully expanded, editable Markdown-backed Contact using JSContact 2.0\nmatch:\n where:\n /@type: Card\n version: \"2.0\"\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: Contact\n description: A local starting shape for a person or organisation using IETF JSContact 2.0.\n type: object\n required:\n - \"@type\"\n - version\n properties:\n \"@type\":\n const: Card\n version:\n const: \"2.0\"\n uid:\n type: string\n minLength: 1\n kind:\n enum:\n - individual\n - group\n - org\n - location\n - device\n - application\n name:\n type: object\n properties:\n \"@type\":\n const: Name\n components:\n type: array\n minItems: 1\n contains:\n type: object\n required:\n - kind\n properties:\n kind:\n not:\n const: separator\n items:\n type: object\n required:\n - kind\n - value\n properties:\n \"@type\":\n const: NameComponent\n kind:\n enum:\n - credential\n - generation\n - given\n - given2\n - separator\n - surname\n - surname2\n - title\n value:\n type: string\n additionalProperties: false\n full:\n type: string\n minLength: 1\n isOrdered:\n type: boolean\n defaultSeparator:\n type: string\n anyOf:\n - required:\n - components\n - required:\n - full\n additionalProperties: false\n emails:\n type: object\n propertyNames:\n type: string\n minLength: 1\n additionalProperties:\n type: object\n required:\n - address\n properties:\n \"@type\":\n const: EmailAddress\n address:\n type: string\n format: email\n contexts:\n type: object\n additionalProperties:\n const: true\n pref:\n type: integer\n minimum: 1\n label:\n type: string\n additionalProperties: false\n phones:\n type: object\n propertyNames:\n type: string\n minLength: 1\n additionalProperties:\n type: object\n required:\n - number\n properties:\n \"@type\":\n const: Phone\n number:\n type: string\n minLength: 1\n features:\n type: object\n additionalProperties:\n const: true\n contexts:\n type: object\n additionalProperties:\n const: true\n pref:\n type: integer\n minimum: 1\n label:\n type: string\n additionalProperties: false\n organizations:\n type: object\n propertyNames:\n type: string\n minLength: 1\n additionalProperties:\n type: object\n properties:\n \"@type\":\n const: Organization\n name:\n type: string\n minLength: 1\n units:\n type: array\n minItems: 1\n items:\n type: object\n required:\n - name\n properties:\n \"@type\":\n const: OrgUnit\n name:\n type: string\n minLength: 1\n additionalProperties: false\n sortAs:\n type: string\n contexts:\n type: object\n additionalProperties:\n const: true\n anyOf:\n - required:\n - name\n - required:\n - units\n additionalProperties: false\n notes:\n type: object\n propertyNames:\n type: string\n minLength: 1\n additionalProperties:\n type: object\n required:\n - note\n properties:\n \"@type\":\n const: Note\n note:\n type: string\n created:\n type: string\n format: date-time\n additionalProperties: false\n additionalProperties: false\ncollection:\n display:\n name_field: /name/full\nimplements:\n - contract: mdbase.jscontact.card\n version: 2.0.0\n fields:\n /@type: /@type\n version: version\n uid: uid\n kind: kind\n name: name\n emails: emails\n phones: phones\n organizations: organizations\n notes: notes\n---\n\n# Contact\n\nThis type begins as a fully expanded local copy of the JSContact core profile.\nNested fields are declared inline so the type editor can edit them directly.\nIts fields belong to the collection and can be added, renamed, or reshaped.\nUpdate the explicit contract mapping whenever a compatible field moves.\n\nThe separately installed contract schema remains the portable boundary. Local\nfields that are not mapped into that boundary remain collection-specific.\n" - } - ], - "provides": [ - { - "id": "mdbase.jscontact.card", - "version": "2.0.0" - } - ] -} diff --git a/public/contracts/packs/mdbase.runtime.standard/0.2.0.json b/public/contracts/packs/mdbase.runtime.standard/0.2.0.json deleted file mode 100644 index d8447bf..0000000 --- a/public/contracts/packs/mdbase.runtime.standard/0.2.0.json +++ /dev/null @@ -1,495 +0,0 @@ -{ - "manifest": { - "kind": "mdbase.type-pack", - "id": "mdbase.runtime.standard", - "version": "0.2.0", - "name": "mdbase durable runtime standard library", - "description": "Runtime record implementations and inspectable built-in event/action contracts.", - "resources": [ - { - "kind": "schema", - "source": "schemas/mdbase.runtime.workflow/1.0.0.schema.json", - "target": "schemas/mdbase.runtime.workflow/1.0.0.schema.json", - "digest": "sha256:e8f413663a2911be5a51b1f7aefae80e9e42ea5c729f04d6ccfd0bc4eb1965ea" - }, - { - "kind": "contract", - "source": "contracts/mdbase.runtime.workflow/1.0.0.md", - "target": "_contracts/mdbase.runtime.workflow/1.0.0.md", - "digest": "sha256:7cf8ed016bf6232d9c1abc8d8bb9bb25fd2af1ffa6c6094317aa65baf3c31049" - }, - { - "kind": "type", - "source": "types/mdbase-runtime/workflow.md", - "target": "_types/workflow.md", - "digest": "sha256:15e80fe618bfa4bf430225377d9aae50ec1e1531be217b0c2ba74da3dee747e7" - }, - { - "kind": "schema", - "source": "schemas/mdbase.runtime.policy/1.0.0.schema.json", - "target": "schemas/mdbase.runtime.policy/1.0.0.schema.json", - "digest": "sha256:4d1d2cb59df9991dcc47e269b21dab9e71c1628b99f71e5d9ff5948ba6f7bc45" - }, - { - "kind": "contract", - "source": "contracts/mdbase.runtime.policy/1.0.0.md", - "target": "_contracts/mdbase.runtime.policy/1.0.0.md", - "digest": "sha256:319a9bd4ca62a246871ee52e0ef0250a82c240cb14a95f88e4a505ad04450300" - }, - { - "kind": "type", - "source": "types/mdbase-runtime/policy.md", - "target": "_types/policy.md", - "digest": "sha256:5cd588138916c792068bfa6ec43ceada81b14921d68cfaa582be8938e27b9cdb" - }, - { - "kind": "schema", - "source": "schemas/mdbase.runtime.provider-registration/1.0.0.schema.json", - "target": "schemas/mdbase.runtime.provider-registration/1.0.0.schema.json", - "digest": "sha256:4cfd9649863835163baee7542b601991c18b21b75c63b48324383da674a1f797" - }, - { - "kind": "contract", - "source": "contracts/mdbase.runtime.provider-registration/1.0.0.md", - "target": "_contracts/mdbase.runtime.provider-registration/1.0.0.md", - "digest": "sha256:97d157efaeb311745fc84e2cbe01e8147aaf44109384090c154527b68838d766" - }, - { - "kind": "type", - "source": "types/mdbase-runtime/provider-registration.md", - "target": "_types/provider-registration.md", - "digest": "sha256:f5f8189553abfbb947d6bec17cfc3d5c6e3ab22a07e7a1b657a92efbe65eefb7" - }, - { - "kind": "schema", - "source": "schemas/mdbase.runtime.capability-grant/1.0.0.schema.json", - "target": "schemas/mdbase.runtime.capability-grant/1.0.0.schema.json", - "digest": "sha256:14fcd3ad1fbe3d3c360024e869d8a52ec047aa8b2dd37755c63e2412535f50ca" - }, - { - "kind": "contract", - "source": "contracts/mdbase.runtime.capability-grant/1.0.0.md", - "target": "_contracts/mdbase.runtime.capability-grant/1.0.0.md", - "digest": "sha256:1cd3a2ff5fdc9294f766e538c371ed278ad4c54452480ba6fcc2870be08b47a1" - }, - { - "kind": "type", - "source": "types/mdbase-runtime/capability-grant.md", - "target": "_types/capability-grant.md", - "digest": "sha256:8856057d1329e2fdd715d6b8ca3083e29f3c1c9fe3265cd47694d92effffd344" - }, - { - "kind": "schema", - "source": "schemas/mdbase.runtime.run/1.0.0.schema.json", - "target": "schemas/mdbase.runtime.run/1.0.0.schema.json", - "digest": "sha256:0add08b601ebd15b80dc14812fc7fbf9c1b5bd8415daed7b7d566e33741d91c3" - }, - { - "kind": "contract", - "source": "contracts/mdbase.runtime.run/1.0.0.md", - "target": "_contracts/mdbase.runtime.run/1.0.0.md", - "digest": "sha256:7e46270c951e6634fe25519dff10523652365f8adf30b034f01e29e1ca48cadb" - }, - { - "kind": "type", - "source": "types/mdbase-runtime/run.md", - "target": "_types/run.md", - "digest": "sha256:493c29c92701e733822cc3b3a0acecd845242c1e62c233b6cbe2a847c9b063ed" - }, - { - "kind": "schema", - "source": "schemas/mdbase.runtime.action-attempt/1.0.0.schema.json", - "target": "schemas/mdbase.runtime.action-attempt/1.0.0.schema.json", - "digest": "sha256:71c8cb274daa63ed8b428f474ec07d0053e65e06f42354cb7f36072cb136506c" - }, - { - "kind": "contract", - "source": "contracts/mdbase.runtime.action-attempt/1.0.0.md", - "target": "_contracts/mdbase.runtime.action-attempt/1.0.0.md", - "digest": "sha256:04c1bf55580d0d280d2be645c56177da25c2d0129f8fa71def7d5f96cf0ea629" - }, - { - "kind": "type", - "source": "types/mdbase-runtime/action-attempt.md", - "target": "_types/action-attempt.md", - "digest": "sha256:2439c819f16f599c6859eaf3f2052ca85856d7a032b1f211e8183eb44c7247d0" - }, - { - "kind": "schema", - "source": "schemas/mdbase.runtime.checkpoint/1.0.0.schema.json", - "target": "schemas/mdbase.runtime.checkpoint/1.0.0.schema.json", - "digest": "sha256:0c4a550356b974814690bb2e5db1902c6c3cff13be1ea69a139e2e43781ecf2c" - }, - { - "kind": "contract", - "source": "contracts/mdbase.runtime.checkpoint/1.0.0.md", - "target": "_contracts/mdbase.runtime.checkpoint/1.0.0.md", - "digest": "sha256:6413676d7482a71b31cbe4abf8c5a543a54a530ef62f669f8ef8e21bcc6bc237" - }, - { - "kind": "type", - "source": "types/mdbase-runtime/checkpoint.md", - "target": "_types/checkpoint.md", - "digest": "sha256:3800feba41ce4d729703e8cd92c3e7bc4a826cccd37063c1ba62b7a9790bee76" - }, - { - "kind": "schema", - "source": "schemas/mdbase.runtime.timer/1.0.0.schema.json", - "target": "schemas/mdbase.runtime.timer/1.0.0.schema.json", - "digest": "sha256:fd6fa1b8fa7a3e782160d1b0e1399f15392230d1560393e840e7869c7d407aac" - }, - { - "kind": "contract", - "source": "contracts/mdbase.runtime.timer/1.0.0.md", - "target": "_contracts/mdbase.runtime.timer/1.0.0.md", - "digest": "sha256:0500a421e81eef09c37bc4ef559e3805843e87a6e1b2cf2a393da4d76d4384fc" - }, - { - "kind": "type", - "source": "types/mdbase-runtime/timer.md", - "target": "_types/timer.md", - "digest": "sha256:eb6ac4d28f3fe5c5f507652dda76cf7bb6eb99e38eb1d6d87cdd7418ac594cde" - }, - { - "kind": "schema", - "source": "schemas/mdbase.runtime.diagnostic/1.0.0.schema.json", - "target": "schemas/mdbase.runtime.diagnostic/1.0.0.schema.json", - "digest": "sha256:b4d78f97b4feadc6c1e79b214fac20f0c305609e20f152f878d23d5d4e370935" - }, - { - "kind": "contract", - "source": "contracts/mdbase.runtime.diagnostic/1.0.0.md", - "target": "_contracts/mdbase.runtime.diagnostic/1.0.0.md", - "digest": "sha256:2e7379de9ceefa6435e9c66a71f4292e4805e8038ed6496c83dad946900267f6" - }, - { - "kind": "type", - "source": "types/mdbase-runtime/diagnostic.md", - "target": "_types/diagnostic.md", - "digest": "sha256:728996e9b0ab2803ab81a856e2c3af7c08202765fc263c536c037b1e586ab055" - }, - { - "kind": "schema", - "source": "schemas/mdbase.runtime.dead-letter/1.0.0.schema.json", - "target": "schemas/mdbase.runtime.dead-letter/1.0.0.schema.json", - "digest": "sha256:1f866b1dfca061571a8dc3a87748fd9deb6268a6674fe5eaf764e8701d32fee9" - }, - { - "kind": "contract", - "source": "contracts/mdbase.runtime.dead-letter/1.0.0.md", - "target": "_contracts/mdbase.runtime.dead-letter/1.0.0.md", - "digest": "sha256:737d08bad6662e087c3393f6f17d24374f258d60b41112a3f864cb5138af8edd" - }, - { - "kind": "type", - "source": "types/mdbase-runtime/dead-letter.md", - "target": "_types/dead-letter.md", - "digest": "sha256:46290341f04a369598a273f16275ee18d6e0a35c8e691b829d7b49ae920b5aab" - }, - { - "kind": "schema", - "source": "schemas/mdbase.record.created/1.0.0.schema.json", - "target": "schemas/mdbase.record.created/1.0.0.schema.json", - "digest": "sha256:8d28a2a32083ab9a55f53ad1a619da47022fa3ef291191c6c2e5a9848ce59fcc" - }, - { - "kind": "contract", - "source": "contracts/mdbase.record.created/1.0.0.md", - "target": "_contracts/mdbase.record.created/1.0.0.md", - "digest": "sha256:4c157f94e63d1f4fb1a74da640e03264ccb6c78cfa9f88ddb71b09c8bd6d1d44" - }, - { - "kind": "schema", - "source": "schemas/mdbase.record.modified/1.0.0.schema.json", - "target": "schemas/mdbase.record.modified/1.0.0.schema.json", - "digest": "sha256:1ecda771bdeb4b6cea32b81ee344257005b49c4dcf71cdf95a1577a7459b74b0" - }, - { - "kind": "contract", - "source": "contracts/mdbase.record.modified/1.0.0.md", - "target": "_contracts/mdbase.record.modified/1.0.0.md", - "digest": "sha256:2f670ef18bf7330fbba73861f41889ee946b33644074ca7366e88913f6e4d88a" - }, - { - "kind": "schema", - "source": "schemas/mdbase.record.deleted/1.0.0.schema.json", - "target": "schemas/mdbase.record.deleted/1.0.0.schema.json", - "digest": "sha256:b5a1fa20b6526ea8d857e03a2eebfc8b2ed126b1c4e7ca2d9735c59ddbeb7206" - }, - { - "kind": "contract", - "source": "contracts/mdbase.record.deleted/1.0.0.md", - "target": "_contracts/mdbase.record.deleted/1.0.0.md", - "digest": "sha256:cb4f4a09f9f9b1f7f5e2207de0074ce02fd89008c08386626fd964a29299f956" - }, - { - "kind": "schema", - "source": "schemas/mdbase.record.renamed/1.0.0.schema.json", - "target": "schemas/mdbase.record.renamed/1.0.0.schema.json", - "digest": "sha256:11546c9497c9700ed48b2f634be8001a009b7cea92f19584ed8b8aafc783e990" - }, - { - "kind": "contract", - "source": "contracts/mdbase.record.renamed/1.0.0.md", - "target": "_contracts/mdbase.record.renamed/1.0.0.md", - "digest": "sha256:b6c507198379ba48408c9b48161a1c22d46dad2d291691af449167618484bb4c" - }, - { - "kind": "schema", - "source": "schemas/mdbase.runtime.timer.fired/1.0.0.schema.json", - "target": "schemas/mdbase.runtime.timer.fired/1.0.0.schema.json", - "digest": "sha256:986cdde8c88a6ff363062d056101141c436271608e565d2a02f250cd74853f74" - }, - { - "kind": "contract", - "source": "contracts/mdbase.runtime.timer.fired/1.0.0.md", - "target": "_contracts/mdbase.runtime.timer.fired/1.0.0.md", - "digest": "sha256:9381a2c6778a3268758ac235e3c3b66991a769fa8e19f7303d4404b1e7e62bc6" - }, - { - "kind": "schema", - "source": "schemas/mdbase.runtime.run.cancel/1.0.0.output.schema.json", - "target": "schemas/mdbase.runtime.run.cancel/1.0.0.output.schema.json", - "digest": "sha256:88cbccbfe0e4d087b67159a2cc36cc6ec92b1ea7e849a5c6a82e074f06b270bb" - }, - { - "kind": "schema", - "source": "schemas/mdbase.runtime.run.cancel/1.0.0.schema.json", - "target": "schemas/mdbase.runtime.run.cancel/1.0.0.schema.json", - "digest": "sha256:21dce4d30fd9848e43610c26990fd208476cdb27c5b489439f632384b4a76675" - }, - { - "kind": "contract", - "source": "contracts/mdbase.runtime.run.cancel/1.0.0.md", - "target": "_contracts/mdbase.runtime.run.cancel/1.0.0.md", - "digest": "sha256:949f039334cfc3f096beb870419baa08c3b40679b184e9849f9330a34a6f524d" - } - ] - }, - "resources": [ - { - "source": "schemas/mdbase.runtime.workflow/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"mdbase durable runtime workflow\",\n \"type\": \"object\",\n \"required\": [\n \"type\",\n \"id\",\n \"version\",\n \"name\",\n \"enabled\",\n \"triggers\",\n \"steps\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"runtime_workflow\"\n },\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"requires\": {\n \"$ref\": \"#/$defs/requires\"\n },\n \"vars\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"triggers\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"$ref\": \"#/$defs/trigger\"\n }\n },\n \"steps\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"$ref\": \"#/$defs/step\"\n }\n },\n \"run\": {\n \"$ref\": \"#/$defs/runPolicy\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"identifier\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"semanticVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n },\n \"dateTime\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"contractRequirement\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"exactContractReference\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\",\n \"digest\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"identity\": {\n \"type\": \"object\",\n \"required\": [\n \"application\",\n \"implementation\",\n \"version\"\n ],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"providerSelector\": {\n \"type\": \"object\",\n \"required\": [],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"minProperties\": 1\n },\n \"expression\": {\n \"type\": \"object\",\n \"required\": [\n \"$expr\"\n ],\n \"properties\": {\n \"$expr\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"additionalProperties\": false\n },\n \"requires\": {\n \"type\": \"object\",\n \"required\": [],\n \"properties\": {\n \"capabilities\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n }\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"trigger\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"event\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"event\": {\n \"$ref\": \"#/$defs/contractRequirement\"\n },\n \"if\": {\n \"type\": \"object\",\n \"required\": [\n \"$expr\"\n ],\n \"properties\": {\n \"$expr\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"additionalProperties\": false\n },\n \"debounce\": {\n \"$ref\": \"#/$defs/duration\"\n },\n \"minimum_interval\": {\n \"$ref\": \"#/$defs/duration\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"step\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"action\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"action\": {\n \"$ref\": \"#/$defs/contractRequirement\"\n },\n \"provider\": {\n \"$ref\": \"#/$defs/providerSelector\"\n },\n \"requires\": {\n \"$ref\": \"#/$defs/requires\"\n },\n \"if\": {\n \"type\": \"object\",\n \"required\": [\n \"$expr\"\n ],\n \"properties\": {\n \"$expr\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"additionalProperties\": false\n },\n \"input\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"for_each\": {\n \"type\": \"object\",\n \"required\": [\n \"items\"\n ],\n \"properties\": {\n \"items\": {},\n \"as\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z_][A-Za-z0-9_]*$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"duration\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)(ms|s|m|h|d)$\"\n },\n \"runPolicy\": {\n \"type\": \"object\",\n \"required\": [],\n \"properties\": {\n \"idempotency\": {\n \"type\": \"object\",\n \"required\": [\n \"key\"\n ],\n \"properties\": {\n \"key\": {}\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"concurrency\": {\n \"type\": \"object\",\n \"required\": [\n \"policy\"\n ],\n \"properties\": {\n \"group\": {},\n \"policy\": {\n \"enum\": [\n \"skip\",\n \"queue\",\n \"replace\",\n \"allow\"\n ]\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"limits\": {\n \"type\": \"object\",\n \"required\": [],\n \"properties\": {\n \"timeout\": {\n \"$ref\": \"#/$defs/duration\"\n },\n \"max_items\": {\n \"type\": \"integer\",\n \"minimum\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"on_error\": {\n \"enum\": [\n \"stop\",\n \"continue\"\n ]\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n }\n },\n \"$id\": \"https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.workflow/1.0.0.schema.json\"\n}\n" - }, - { - "source": "contracts/mdbase.runtime.workflow/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.runtime.workflow\nversion: 1.0.0\nname: Durable workflow\ndescription: A portable workflow whose event and action references are resolved and pinned at admission.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.runtime.workflow/1.0.0.schema.json\n---\n\n# Durable workflow\n\nA portable workflow whose event and action references are resolved and pinned at admission.\n\nThis artifact is passive. Installing it or a type that implements it grants no\nauthority to execute workflows or invoke providers.\n" - }, - { - "source": "types/mdbase-runtime/workflow.md", - "document": "---\nkind: mdbase.type\nname: runtime_workflow\nversion: 1\ndescription: Canonical Markdown implementation of mdbase.runtime.workflow.\nmatch:\n where:\n type: runtime_workflow\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: mdbase durable runtime workflow\n type: object\n required:\n - type\n - id\n - version\n - name\n - enabled\n - triggers\n - steps\n properties:\n type:\n const: runtime_workflow\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n name:\n type: string\n minLength: 1\n description:\n type: string\n enabled:\n type: boolean\n requires:\n $ref: \"#/$defs/requires\"\n vars:\n type: object\n additionalProperties: {}\n triggers:\n type: array\n minItems: 1\n items:\n $ref: \"#/$defs/trigger\"\n steps:\n type: array\n minItems: 1\n items:\n $ref: \"#/$defs/step\"\n run:\n $ref: \"#/$defs/runPolicy\"\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n $defs:\n identifier:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n semanticVersion:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n dateTime:\n type: string\n format: date-time\n contractRequirement:\n type: object\n required:\n - id\n - version\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n minLength: 1\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n exactContractReference:\n type: object\n required:\n - id\n - version\n - digest\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n identity:\n type: object\n required:\n - application\n - implementation\n - version\n properties:\n application:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n implementation:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n instance_id:\n type: string\n minLength: 1\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n providerSelector:\n type: object\n required: []\n properties:\n application:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n implementation:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n instance_id:\n type: string\n minLength: 1\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n minProperties: 1\n expression:\n type: object\n required:\n - $expr\n properties:\n $expr:\n type: string\n minLength: 1\n additionalProperties: false\n requires:\n type: object\n required: []\n properties:\n capabilities:\n type: array\n uniqueItems: true\n items:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n trigger:\n type: object\n required:\n - id\n - event\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n event:\n $ref: \"#/$defs/contractRequirement\"\n if:\n type: object\n required:\n - $expr\n properties:\n $expr:\n type: string\n minLength: 1\n additionalProperties: false\n debounce:\n $ref: \"#/$defs/duration\"\n minimum_interval:\n $ref: \"#/$defs/duration\"\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n step:\n type: object\n required:\n - id\n - action\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n name:\n type: string\n action:\n $ref: \"#/$defs/contractRequirement\"\n provider:\n $ref: \"#/$defs/providerSelector\"\n requires:\n $ref: \"#/$defs/requires\"\n if:\n type: object\n required:\n - $expr\n properties:\n $expr:\n type: string\n minLength: 1\n additionalProperties: false\n input:\n type: object\n additionalProperties: {}\n for_each:\n type: object\n required:\n - items\n properties:\n items: {}\n as:\n type: string\n pattern: ^[A-Za-z_][A-Za-z0-9_]*$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n duration:\n type: string\n pattern: ^(0|[1-9][0-9]*)(ms|s|m|h|d)$\n runPolicy:\n type: object\n required: []\n properties:\n idempotency:\n type: object\n required:\n - key\n properties:\n key: {}\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n concurrency:\n type: object\n required:\n - policy\n properties:\n group: {}\n policy:\n enum:\n - skip\n - queue\n - replace\n - allow\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n limits:\n type: object\n required: []\n properties:\n timeout:\n $ref: \"#/$defs/duration\"\n max_items:\n type: integer\n minimum: 1\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n on_error:\n enum:\n - stop\n - continue\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n $id: https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.workflow/1.0.0.schema.json\nimplements:\n - contract: mdbase.runtime.workflow\n version: 1.0.0\n fields:\n type: type\n id: id\n version: version\n name: name\n description: description\n enabled: enabled\n requires: requires\n vars: vars\n triggers: triggers\n steps: steps\n run: run\n---\n\n# Durable workflow\n\nThis canonical type makes `runtime_workflow` records discoverable through\nthe ordinary mdbase record-contract registry.\n" - }, - { - "source": "schemas/mdbase.runtime.policy/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"mdbase durable runtime policy\",\n \"type\": \"object\",\n \"required\": [\n \"type\",\n \"id\",\n \"version\",\n \"enabled\",\n \"grants\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"runtime_policy\"\n },\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"executors\": {\n \"type\": \"object\",\n \"required\": [],\n \"properties\": {\n \"default\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"workflows\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n }\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"provider_selections\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"contract\",\n \"selector\"\n ],\n \"properties\": {\n \"contract\": {\n \"$ref\": \"#/$defs/contractRequirement\"\n },\n \"selector\": {\n \"$ref\": \"#/$defs/providerSelector\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n }\n },\n \"grants\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"capability\",\n \"mode\"\n ],\n \"properties\": {\n \"capability\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"mode\": {\n \"enum\": [\n \"allow\",\n \"deny\"\n ]\n },\n \"actions\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"$ref\": \"#/$defs/contractRequirement\"\n }\n },\n \"providers\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"$ref\": \"#/$defs/providerSelector\"\n }\n },\n \"max_calls_per_run\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"max_records_per_run\": {\n \"type\": \"integer\",\n \"minimum\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n }\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"identifier\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"semanticVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n },\n \"dateTime\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"contractRequirement\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"exactContractReference\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\",\n \"digest\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"identity\": {\n \"type\": \"object\",\n \"required\": [\n \"application\",\n \"implementation\",\n \"version\"\n ],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"providerSelector\": {\n \"type\": \"object\",\n \"required\": [],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"minProperties\": 1\n },\n \"expression\": {\n \"type\": \"object\",\n \"required\": [\n \"$expr\"\n ],\n \"properties\": {\n \"$expr\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"additionalProperties\": false\n }\n },\n \"$id\": \"https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.policy/1.0.0.schema.json\"\n}\n" - }, - { - "source": "contracts/mdbase.runtime.policy/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.runtime.policy\nversion: 1.0.0\nname: Runtime policy\ndescription: Local authorization, executor, limit, and provider-selection policy.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.runtime.policy/1.0.0.schema.json\n---\n\n# Runtime policy\n\nLocal authorization, executor, limit, and provider-selection policy.\n\nThis artifact is passive. Installing it or a type that implements it grants no\nauthority to execute workflows or invoke providers.\n" - }, - { - "source": "types/mdbase-runtime/policy.md", - "document": "---\nkind: mdbase.type\nname: runtime_policy\nversion: 1\ndescription: Canonical Markdown implementation of mdbase.runtime.policy.\nmatch:\n where:\n type: runtime_policy\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: mdbase durable runtime policy\n type: object\n required:\n - type\n - id\n - version\n - enabled\n - grants\n properties:\n type:\n const: runtime_policy\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n name:\n type: string\n minLength: 1\n enabled:\n type: boolean\n executors:\n type: object\n required: []\n properties:\n default:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n workflows:\n type: object\n additionalProperties:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n provider_selections:\n type: array\n items:\n type: object\n required:\n - contract\n - selector\n properties:\n contract:\n $ref: \"#/$defs/contractRequirement\"\n selector:\n $ref: \"#/$defs/providerSelector\"\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n grants:\n type: array\n items:\n type: object\n required:\n - capability\n - mode\n properties:\n capability:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n mode:\n enum:\n - allow\n - deny\n actions:\n type: array\n uniqueItems: true\n items:\n $ref: \"#/$defs/contractRequirement\"\n providers:\n type: array\n uniqueItems: true\n items:\n $ref: \"#/$defs/providerSelector\"\n max_calls_per_run:\n type: integer\n minimum: 1\n max_records_per_run:\n type: integer\n minimum: 1\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n $defs:\n identifier:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n semanticVersion:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n dateTime:\n type: string\n format: date-time\n contractRequirement:\n type: object\n required:\n - id\n - version\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n minLength: 1\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n exactContractReference:\n type: object\n required:\n - id\n - version\n - digest\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n identity:\n type: object\n required:\n - application\n - implementation\n - version\n properties:\n application:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n implementation:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n instance_id:\n type: string\n minLength: 1\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n providerSelector:\n type: object\n required: []\n properties:\n application:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n implementation:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n instance_id:\n type: string\n minLength: 1\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n minProperties: 1\n expression:\n type: object\n required:\n - $expr\n properties:\n $expr:\n type: string\n minLength: 1\n additionalProperties: false\n $id: https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.policy/1.0.0.schema.json\nimplements:\n - contract: mdbase.runtime.policy\n version: 1.0.0\n fields:\n type: type\n id: id\n version: version\n name: name\n enabled: enabled\n executors: executors\n provider_selections: provider_selections\n grants: grants\n---\n\n# Runtime policy\n\nThis canonical type makes `runtime_policy` records discoverable through\nthe ordinary mdbase record-contract registry.\n" - }, - { - "source": "schemas/mdbase.runtime.provider-registration/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"mdbase runtime provider registration evidence\",\n \"type\": \"object\",\n \"required\": [\n \"type\",\n \"id\",\n \"declaration_kind\",\n \"declaration\",\n \"verified_at\",\n \"active\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"runtime_provider_registration\"\n },\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"declaration_kind\": {\n \"enum\": [\n \"event_source\",\n \"action_provider\"\n ]\n },\n \"declaration\": {\n \"type\": \"object\"\n },\n \"verified_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"active\": {\n \"type\": \"boolean\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"identifier\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"semanticVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n },\n \"dateTime\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"contractRequirement\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"exactContractReference\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\",\n \"digest\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"identity\": {\n \"type\": \"object\",\n \"required\": [\n \"application\",\n \"implementation\",\n \"version\"\n ],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"providerSelector\": {\n \"type\": \"object\",\n \"required\": [],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"minProperties\": 1\n },\n \"expression\": {\n \"type\": \"object\",\n \"required\": [\n \"$expr\"\n ],\n \"properties\": {\n \"$expr\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"additionalProperties\": false\n }\n },\n \"$id\": \"https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.provider-registration/1.0.0.schema.json\"\n}\n" - }, - { - "source": "contracts/mdbase.runtime.provider-registration/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.runtime.provider-registration\nversion: 1.0.0\nname: Provider registration evidence\ndescription: An optional audit snapshot of a verified interoperability declaration; it never activates code.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.runtime.provider-registration/1.0.0.schema.json\n---\n\n# Provider registration evidence\n\nAn optional audit snapshot of a verified interoperability declaration; it never activates code.\n\nThis artifact is passive. Installing it or a type that implements it grants no\nauthority to execute workflows or invoke providers.\n" - }, - { - "source": "types/mdbase-runtime/provider-registration.md", - "document": "---\nkind: mdbase.type\nname: runtime_provider_registration\nversion: 1\ndescription: Canonical Markdown implementation of mdbase.runtime.provider-registration.\nmatch:\n where:\n type: runtime_provider_registration\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: mdbase runtime provider registration evidence\n type: object\n required:\n - type\n - id\n - declaration_kind\n - declaration\n - verified_at\n - active\n properties:\n type:\n const: runtime_provider_registration\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n declaration_kind:\n enum:\n - event_source\n - action_provider\n declaration:\n type: object\n verified_at:\n type: string\n format: date-time\n active:\n type: boolean\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n $defs:\n identifier:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n semanticVersion:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n dateTime:\n type: string\n format: date-time\n contractRequirement:\n type: object\n required:\n - id\n - version\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n minLength: 1\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n exactContractReference:\n type: object\n required:\n - id\n - version\n - digest\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n identity:\n type: object\n required:\n - application\n - implementation\n - version\n properties:\n application:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n implementation:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n instance_id:\n type: string\n minLength: 1\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n providerSelector:\n type: object\n required: []\n properties:\n application:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n implementation:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n instance_id:\n type: string\n minLength: 1\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n minProperties: 1\n expression:\n type: object\n required:\n - $expr\n properties:\n $expr:\n type: string\n minLength: 1\n additionalProperties: false\n $id: https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.provider-registration/1.0.0.schema.json\nimplements:\n - contract: mdbase.runtime.provider-registration\n version: 1.0.0\n fields:\n type: type\n id: id\n declaration_kind: declaration_kind\n declaration: declaration\n verified_at: verified_at\n active: active\n---\n\n# Provider registration evidence\n\nThis canonical type makes `runtime_provider_registration` records discoverable through\nthe ordinary mdbase record-contract registry.\n" - }, - { - "source": "schemas/mdbase.runtime.capability-grant/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"mdbase runtime capability grant\",\n \"type\": \"object\",\n \"required\": [\n \"type\",\n \"id\",\n \"capability\",\n \"principal\",\n \"mode\",\n \"granted_at\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"runtime_capability_grant\"\n },\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"capability\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"principal\": {\n \"$ref\": \"#/$defs/identity\"\n },\n \"mode\": {\n \"enum\": [\n \"allow\",\n \"deny\"\n ]\n },\n \"actions\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"$ref\": \"#/$defs/contractRequirement\"\n }\n },\n \"providers\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"$ref\": \"#/$defs/providerSelector\"\n }\n },\n \"granted_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"expires_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"identifier\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"semanticVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n },\n \"dateTime\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"contractRequirement\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"exactContractReference\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\",\n \"digest\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"identity\": {\n \"type\": \"object\",\n \"required\": [\n \"application\",\n \"implementation\",\n \"version\"\n ],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"providerSelector\": {\n \"type\": \"object\",\n \"required\": [],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"minProperties\": 1\n },\n \"expression\": {\n \"type\": \"object\",\n \"required\": [\n \"$expr\"\n ],\n \"properties\": {\n \"$expr\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"additionalProperties\": false\n }\n },\n \"$id\": \"https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.capability-grant/1.0.0.schema.json\"\n}\n" - }, - { - "source": "contracts/mdbase.runtime.capability-grant/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.runtime.capability-grant\nversion: 1.0.0\nname: Capability grant evidence\ndescription: A materialized authorization grant scoped independently from contract conformance.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.runtime.capability-grant/1.0.0.schema.json\n---\n\n# Capability grant evidence\n\nA materialized authorization grant scoped independently from contract conformance.\n\nThis artifact is passive. Installing it or a type that implements it grants no\nauthority to execute workflows or invoke providers.\n" - }, - { - "source": "types/mdbase-runtime/capability-grant.md", - "document": "---\nkind: mdbase.type\nname: runtime_capability_grant\nversion: 1\ndescription: Canonical Markdown implementation of mdbase.runtime.capability-grant.\nmatch:\n where:\n type: runtime_capability_grant\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: mdbase runtime capability grant\n type: object\n required:\n - type\n - id\n - capability\n - principal\n - mode\n - granted_at\n properties:\n type:\n const: runtime_capability_grant\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n capability:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n principal:\n $ref: \"#/$defs/identity\"\n mode:\n enum:\n - allow\n - deny\n actions:\n type: array\n uniqueItems: true\n items:\n $ref: \"#/$defs/contractRequirement\"\n providers:\n type: array\n uniqueItems: true\n items:\n $ref: \"#/$defs/providerSelector\"\n granted_at:\n type: string\n format: date-time\n expires_at:\n type: string\n format: date-time\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n $defs:\n identifier:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n semanticVersion:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n dateTime:\n type: string\n format: date-time\n contractRequirement:\n type: object\n required:\n - id\n - version\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n minLength: 1\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n exactContractReference:\n type: object\n required:\n - id\n - version\n - digest\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n identity:\n type: object\n required:\n - application\n - implementation\n - version\n properties:\n application:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n implementation:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n instance_id:\n type: string\n minLength: 1\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n providerSelector:\n type: object\n required: []\n properties:\n application:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n implementation:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n instance_id:\n type: string\n minLength: 1\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n minProperties: 1\n expression:\n type: object\n required:\n - $expr\n properties:\n $expr:\n type: string\n minLength: 1\n additionalProperties: false\n $id: https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.capability-grant/1.0.0.schema.json\nimplements:\n - contract: mdbase.runtime.capability-grant\n version: 1.0.0\n fields:\n type: type\n id: id\n capability: capability\n principal: principal\n mode: mode\n actions: actions\n providers: providers\n granted_at: granted_at\n expires_at: expires_at\n---\n\n# Capability grant evidence\n\nThis canonical type makes `runtime_capability_grant` records discoverable through\nthe ordinary mdbase record-contract registry.\n" - }, - { - "source": "schemas/mdbase.runtime.run/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"mdbase durable runtime run\",\n \"type\": \"object\",\n \"required\": [\n \"type\",\n \"id\",\n \"workflow_id\",\n \"workflow_version\",\n \"workflow_revision\",\n \"event_id\",\n \"event_contract\",\n \"admitted_plan\",\n \"status\",\n \"created_at\",\n \"updated_at\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"runtime_run\"\n },\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"workflow_id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"workflow_version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"workflow_revision\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n },\n \"event_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"event_contract\": {\n \"$ref\": \"#/$defs/exactContractReference\"\n },\n \"event_source\": {\n \"$ref\": \"#/$defs/identity\"\n },\n \"admitted_plan\": {\n \"$ref\": \"#/$defs/admittedPlan\"\n },\n \"policy_id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"policy_revision\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n },\n \"trigger_id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"event_cursor\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"executor\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"idempotency_key\": {\n \"type\": \"string\"\n },\n \"concurrency_group\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"enum\": [\n \"queued\",\n \"running\",\n \"waiting\",\n \"succeeded\",\n \"failed\",\n \"cancelled\",\n \"indeterminate\"\n ]\n },\n \"created_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"started_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"finished_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"lease\": {\n \"$ref\": \"#/$defs/lease\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"identifier\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"semanticVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n },\n \"dateTime\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"contractRequirement\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"exactContractReference\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\",\n \"digest\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"identity\": {\n \"type\": \"object\",\n \"required\": [\n \"application\",\n \"implementation\",\n \"version\"\n ],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"providerSelector\": {\n \"type\": \"object\",\n \"required\": [],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"minProperties\": 1\n },\n \"expression\": {\n \"type\": \"object\",\n \"required\": [\n \"$expr\"\n ],\n \"properties\": {\n \"$expr\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"additionalProperties\": false\n },\n \"admittedPlan\": {\n \"type\": \"object\",\n \"required\": [\n \"profile_version\",\n \"workflow_revision\",\n \"event\",\n \"steps\"\n ],\n \"properties\": {\n \"profile_version\": {\n \"const\": \"0.2\"\n },\n \"workflow_revision\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n },\n \"event\": {\n \"type\": \"object\",\n \"required\": [\n \"contract\",\n \"source\"\n ],\n \"properties\": {\n \"contract\": {\n \"$ref\": \"#/$defs/exactContractReference\"\n },\n \"source\": {\n \"$ref\": \"#/$defs/identity\"\n },\n \"source_declaration_digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"steps\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"contract\",\n \"provider\",\n \"provider_declaration_digest\",\n \"handler_id\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"contract\": {\n \"$ref\": \"#/$defs/exactContractReference\"\n },\n \"provider\": {\n \"$ref\": \"#/$defs/identity\"\n },\n \"provider_declaration_digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n },\n \"handler_id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n }\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"lease\": {\n \"type\": \"object\",\n \"required\": [\n \"owner\",\n \"token\",\n \"expires_at\"\n ],\n \"properties\": {\n \"owner\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"token\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"expires_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n }\n },\n \"$id\": \"https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.run/1.0.0.schema.json\"\n}\n" - }, - { - "source": "contracts/mdbase.runtime.run/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.runtime.run\nversion: 1.0.0\nname: Durable run\ndescription: The durable state and immutable admitted plan for one workflow execution.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.runtime.run/1.0.0.schema.json\n---\n\n# Durable run\n\nThe durable state and immutable admitted plan for one workflow execution.\n\nThis artifact is passive. Installing it or a type that implements it grants no\nauthority to execute workflows or invoke providers.\n" - }, - { - "source": "types/mdbase-runtime/run.md", - "document": "---\nkind: mdbase.type\nname: runtime_run\nversion: 1\ndescription: Canonical Markdown implementation of mdbase.runtime.run.\nmatch:\n where:\n type: runtime_run\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: mdbase durable runtime run\n type: object\n required:\n - type\n - id\n - workflow_id\n - workflow_version\n - workflow_revision\n - event_id\n - event_contract\n - admitted_plan\n - status\n - created_at\n - updated_at\n properties:\n type:\n const: runtime_run\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n workflow_id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n workflow_version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n workflow_revision:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n event_id:\n type: string\n minLength: 1\n event_contract:\n $ref: \"#/$defs/exactContractReference\"\n event_source:\n $ref: \"#/$defs/identity\"\n admitted_plan:\n $ref: \"#/$defs/admittedPlan\"\n policy_id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n policy_revision:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n trigger_id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n event_cursor:\n type: integer\n minimum: 1\n executor:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n idempotency_key:\n type: string\n concurrency_group:\n type: string\n status:\n enum:\n - queued\n - running\n - waiting\n - succeeded\n - failed\n - cancelled\n - indeterminate\n created_at:\n type: string\n format: date-time\n updated_at:\n type: string\n format: date-time\n started_at:\n type: string\n format: date-time\n finished_at:\n type: string\n format: date-time\n lease:\n $ref: \"#/$defs/lease\"\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n $defs:\n identifier:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n semanticVersion:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n dateTime:\n type: string\n format: date-time\n contractRequirement:\n type: object\n required:\n - id\n - version\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n minLength: 1\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n exactContractReference:\n type: object\n required:\n - id\n - version\n - digest\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n identity:\n type: object\n required:\n - application\n - implementation\n - version\n properties:\n application:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n implementation:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n instance_id:\n type: string\n minLength: 1\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n providerSelector:\n type: object\n required: []\n properties:\n application:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n implementation:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n instance_id:\n type: string\n minLength: 1\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n minProperties: 1\n expression:\n type: object\n required:\n - $expr\n properties:\n $expr:\n type: string\n minLength: 1\n additionalProperties: false\n admittedPlan:\n type: object\n required:\n - profile_version\n - workflow_revision\n - event\n - steps\n properties:\n profile_version:\n const: \"0.2\"\n workflow_revision:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n event:\n type: object\n required:\n - contract\n - source\n properties:\n contract:\n $ref: \"#/$defs/exactContractReference\"\n source:\n $ref: \"#/$defs/identity\"\n source_declaration_digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n steps:\n type: array\n items:\n type: object\n required:\n - id\n - contract\n - provider\n - provider_declaration_digest\n - handler_id\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n contract:\n $ref: \"#/$defs/exactContractReference\"\n provider:\n $ref: \"#/$defs/identity\"\n provider_declaration_digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n handler_id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n lease:\n type: object\n required:\n - owner\n - token\n - expires_at\n properties:\n owner:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n token:\n type: string\n minLength: 1\n expires_at:\n type: string\n format: date-time\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n $id: https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.run/1.0.0.schema.json\nimplements:\n - contract: mdbase.runtime.run\n version: 1.0.0\n fields:\n type: type\n id: id\n workflow_id: workflow_id\n workflow_version: workflow_version\n workflow_revision: workflow_revision\n event_id: event_id\n event_contract: event_contract\n event_source: event_source\n admitted_plan: admitted_plan\n policy_id: policy_id\n policy_revision: policy_revision\n trigger_id: trigger_id\n event_cursor: event_cursor\n executor: executor\n idempotency_key: idempotency_key\n concurrency_group: concurrency_group\n status: status\n created_at: created_at\n updated_at: updated_at\n started_at: started_at\n finished_at: finished_at\n lease: lease\n---\n\n# Durable run\n\nThis canonical type makes `runtime_run` records discoverable through\nthe ordinary mdbase record-contract registry.\n" - }, - { - "source": "schemas/mdbase.runtime.action-attempt/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"mdbase durable runtime action attempt\",\n \"type\": \"object\",\n \"required\": [\n \"type\",\n \"id\",\n \"run_id\",\n \"step_id\",\n \"request_id\",\n \"invocation_id\",\n \"attempt_id\",\n \"contract\",\n \"provider\",\n \"provider_declaration_digest\",\n \"status\",\n \"created_at\",\n \"updated_at\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"runtime_action_attempt\"\n },\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"run_id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"step_id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"request_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"invocation_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"attempt_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"contract\": {\n \"$ref\": \"#/$defs/exactContractReference\"\n },\n \"provider\": {\n \"$ref\": \"#/$defs/identity\"\n },\n \"provider_declaration_digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n },\n \"handler_id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"idempotency_key\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"enum\": [\n \"admitted\",\n \"dispatching\",\n \"succeeded\",\n \"rejected\",\n \"failed\",\n \"cancelled\",\n \"indeterminate\"\n ]\n },\n \"request\": {\n \"type\": \"object\"\n },\n \"invocation\": {\n \"type\": \"object\"\n },\n \"outcome\": {\n \"type\": \"object\"\n },\n \"created_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"completed_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"identifier\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"semanticVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n },\n \"dateTime\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"contractRequirement\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"exactContractReference\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\",\n \"digest\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"identity\": {\n \"type\": \"object\",\n \"required\": [\n \"application\",\n \"implementation\",\n \"version\"\n ],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"providerSelector\": {\n \"type\": \"object\",\n \"required\": [],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"minProperties\": 1\n },\n \"expression\": {\n \"type\": \"object\",\n \"required\": [\n \"$expr\"\n ],\n \"properties\": {\n \"$expr\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"additionalProperties\": false\n }\n },\n \"$id\": \"https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.action-attempt/1.0.0.schema.json\"\n}\n" - }, - { - "source": "contracts/mdbase.runtime.action-attempt/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.runtime.action-attempt\nversion: 1.0.0\nname: Durable action attempt\ndescription: Durable invocation intent and outcome evidence using the shared interoperability envelope.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.runtime.action-attempt/1.0.0.schema.json\n---\n\n# Durable action attempt\n\nDurable invocation intent and outcome evidence using the shared interoperability envelope.\n\nThis artifact is passive. Installing it or a type that implements it grants no\nauthority to execute workflows or invoke providers.\n" - }, - { - "source": "types/mdbase-runtime/action-attempt.md", - "document": "---\nkind: mdbase.type\nname: runtime_action_attempt\nversion: 1\ndescription: Canonical Markdown implementation of mdbase.runtime.action-attempt.\nmatch:\n where:\n type: runtime_action_attempt\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: mdbase durable runtime action attempt\n type: object\n required:\n - type\n - id\n - run_id\n - step_id\n - request_id\n - invocation_id\n - attempt_id\n - contract\n - provider\n - provider_declaration_digest\n - status\n - created_at\n - updated_at\n properties:\n type:\n const: runtime_action_attempt\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n run_id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n step_id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n request_id:\n type: string\n minLength: 1\n invocation_id:\n type: string\n minLength: 1\n attempt_id:\n type: string\n minLength: 1\n contract:\n $ref: \"#/$defs/exactContractReference\"\n provider:\n $ref: \"#/$defs/identity\"\n provider_declaration_digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n handler_id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n idempotency_key:\n type: string\n status:\n enum:\n - admitted\n - dispatching\n - succeeded\n - rejected\n - failed\n - cancelled\n - indeterminate\n request:\n type: object\n invocation:\n type: object\n outcome:\n type: object\n created_at:\n type: string\n format: date-time\n updated_at:\n type: string\n format: date-time\n completed_at:\n type: string\n format: date-time\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n $defs:\n identifier:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n semanticVersion:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n dateTime:\n type: string\n format: date-time\n contractRequirement:\n type: object\n required:\n - id\n - version\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n minLength: 1\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n exactContractReference:\n type: object\n required:\n - id\n - version\n - digest\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n identity:\n type: object\n required:\n - application\n - implementation\n - version\n properties:\n application:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n implementation:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n instance_id:\n type: string\n minLength: 1\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n providerSelector:\n type: object\n required: []\n properties:\n application:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n implementation:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n instance_id:\n type: string\n minLength: 1\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n minProperties: 1\n expression:\n type: object\n required:\n - $expr\n properties:\n $expr:\n type: string\n minLength: 1\n additionalProperties: false\n $id: https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.action-attempt/1.0.0.schema.json\nimplements:\n - contract: mdbase.runtime.action-attempt\n version: 1.0.0\n fields:\n type: type\n id: id\n run_id: run_id\n step_id: step_id\n request_id: request_id\n invocation_id: invocation_id\n attempt_id: attempt_id\n contract: contract\n provider: provider\n provider_declaration_digest: provider_declaration_digest\n handler_id: handler_id\n idempotency_key: idempotency_key\n status: status\n request: request\n invocation: invocation\n outcome: outcome\n created_at: created_at\n updated_at: updated_at\n completed_at: completed_at\n---\n\n# Durable action attempt\n\nThis canonical type makes `runtime_action_attempt` records discoverable through\nthe ordinary mdbase record-contract registry.\n" - }, - { - "source": "schemas/mdbase.runtime.checkpoint/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"mdbase durable runtime checkpoint\",\n \"type\": \"object\",\n \"required\": [\n \"type\",\n \"id\",\n \"run_id\",\n \"generation\",\n \"status\",\n \"state\",\n \"updated_at\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"runtime_checkpoint\"\n },\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"run_id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"generation\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"status\": {\n \"enum\": [\n \"open\",\n \"waiting\",\n \"ready\",\n \"completed\",\n \"failed\",\n \"cancelled\"\n ]\n },\n \"state\": {\n \"type\": \"object\"\n },\n \"updated_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"identifier\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"semanticVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n },\n \"dateTime\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"contractRequirement\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"exactContractReference\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\",\n \"digest\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"identity\": {\n \"type\": \"object\",\n \"required\": [\n \"application\",\n \"implementation\",\n \"version\"\n ],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"providerSelector\": {\n \"type\": \"object\",\n \"required\": [],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"minProperties\": 1\n },\n \"expression\": {\n \"type\": \"object\",\n \"required\": [\n \"$expr\"\n ],\n \"properties\": {\n \"$expr\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"additionalProperties\": false\n }\n },\n \"$id\": \"https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.checkpoint/1.0.0.schema.json\"\n}\n" - }, - { - "source": "contracts/mdbase.runtime.checkpoint/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.runtime.checkpoint\nversion: 1.0.0\nname: Runtime checkpoint\ndescription: A durable, lease-safe workflow continuation.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.runtime.checkpoint/1.0.0.schema.json\n---\n\n# Runtime checkpoint\n\nA durable, lease-safe workflow continuation.\n\nThis artifact is passive. Installing it or a type that implements it grants no\nauthority to execute workflows or invoke providers.\n" - }, - { - "source": "types/mdbase-runtime/checkpoint.md", - "document": "---\nkind: mdbase.type\nname: runtime_checkpoint\nversion: 1\ndescription: Canonical Markdown implementation of mdbase.runtime.checkpoint.\nmatch:\n where:\n type: runtime_checkpoint\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: mdbase durable runtime checkpoint\n type: object\n required:\n - type\n - id\n - run_id\n - generation\n - status\n - state\n - updated_at\n properties:\n type:\n const: runtime_checkpoint\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n run_id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n generation:\n type: integer\n minimum: 1\n status:\n enum:\n - open\n - waiting\n - ready\n - completed\n - failed\n - cancelled\n state:\n type: object\n updated_at:\n type: string\n format: date-time\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n $defs:\n identifier:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n semanticVersion:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n dateTime:\n type: string\n format: date-time\n contractRequirement:\n type: object\n required:\n - id\n - version\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n minLength: 1\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n exactContractReference:\n type: object\n required:\n - id\n - version\n - digest\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n identity:\n type: object\n required:\n - application\n - implementation\n - version\n properties:\n application:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n implementation:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n instance_id:\n type: string\n minLength: 1\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n providerSelector:\n type: object\n required: []\n properties:\n application:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n implementation:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n instance_id:\n type: string\n minLength: 1\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n minProperties: 1\n expression:\n type: object\n required:\n - $expr\n properties:\n $expr:\n type: string\n minLength: 1\n additionalProperties: false\n $id: https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.checkpoint/1.0.0.schema.json\nimplements:\n - contract: mdbase.runtime.checkpoint\n version: 1.0.0\n fields:\n type: type\n id: id\n run_id: run_id\n generation: generation\n status: status\n state: state\n updated_at: updated_at\n---\n\n# Runtime checkpoint\n\nThis canonical type makes `runtime_checkpoint` records discoverable through\nthe ordinary mdbase record-contract registry.\n" - }, - { - "source": "schemas/mdbase.runtime.timer/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"mdbase durable runtime timer\",\n \"type\": \"object\",\n \"required\": [\n \"type\",\n \"id\",\n \"generation\",\n \"status\",\n \"fire_at\",\n \"event\",\n \"created_at\",\n \"updated_at\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"runtime_timer\"\n },\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"generation\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"status\": {\n \"enum\": [\n \"scheduled\",\n \"firing\",\n \"fired\",\n \"cancelled\"\n ]\n },\n \"fire_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"event\": {\n \"type\": \"object\",\n \"required\": [\n \"contract\",\n \"data\"\n ],\n \"properties\": {\n \"contract\": {\n \"$ref\": \"#/$defs/contractRequirement\"\n },\n \"subject\": {\n \"type\": \"string\"\n },\n \"correlation_id\": {\n \"type\": \"string\"\n },\n \"causation_id\": {\n \"type\": \"string\"\n },\n \"data\": {}\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"missed_run_policy\": {\n \"const\": \"fire_once\"\n },\n \"created_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"fired_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"identifier\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"semanticVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n },\n \"dateTime\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"contractRequirement\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"exactContractReference\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\",\n \"digest\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"identity\": {\n \"type\": \"object\",\n \"required\": [\n \"application\",\n \"implementation\",\n \"version\"\n ],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"providerSelector\": {\n \"type\": \"object\",\n \"required\": [],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"minProperties\": 1\n },\n \"expression\": {\n \"type\": \"object\",\n \"required\": [\n \"$expr\"\n ],\n \"properties\": {\n \"$expr\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"additionalProperties\": false\n }\n },\n \"$id\": \"https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.timer/1.0.0.schema.json\"\n}\n" - }, - { - "source": "contracts/mdbase.runtime.timer/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.runtime.timer\nversion: 1.0.0\nname: Runtime timer\ndescription: A generation-safe one-shot timer that publishes through the interoperability profile.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.runtime.timer/1.0.0.schema.json\n---\n\n# Runtime timer\n\nA generation-safe one-shot timer that publishes through the interoperability profile.\n\nThis artifact is passive. Installing it or a type that implements it grants no\nauthority to execute workflows or invoke providers.\n" - }, - { - "source": "types/mdbase-runtime/timer.md", - "document": "---\nkind: mdbase.type\nname: runtime_timer\nversion: 1\ndescription: Canonical Markdown implementation of mdbase.runtime.timer.\nmatch:\n where:\n type: runtime_timer\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: mdbase durable runtime timer\n type: object\n required:\n - type\n - id\n - generation\n - status\n - fire_at\n - event\n - created_at\n - updated_at\n properties:\n type:\n const: runtime_timer\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n generation:\n type: integer\n minimum: 1\n status:\n enum:\n - scheduled\n - firing\n - fired\n - cancelled\n fire_at:\n type: string\n format: date-time\n event:\n type: object\n required:\n - contract\n - data\n properties:\n contract:\n $ref: \"#/$defs/contractRequirement\"\n subject:\n type: string\n correlation_id:\n type: string\n causation_id:\n type: string\n data: {}\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n missed_run_policy:\n const: fire_once\n created_at:\n type: string\n format: date-time\n updated_at:\n type: string\n format: date-time\n fired_at:\n type: string\n format: date-time\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n $defs:\n identifier:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n semanticVersion:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n dateTime:\n type: string\n format: date-time\n contractRequirement:\n type: object\n required:\n - id\n - version\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n minLength: 1\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n exactContractReference:\n type: object\n required:\n - id\n - version\n - digest\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n identity:\n type: object\n required:\n - application\n - implementation\n - version\n properties:\n application:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n implementation:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n instance_id:\n type: string\n minLength: 1\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n providerSelector:\n type: object\n required: []\n properties:\n application:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n implementation:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n instance_id:\n type: string\n minLength: 1\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n minProperties: 1\n expression:\n type: object\n required:\n - $expr\n properties:\n $expr:\n type: string\n minLength: 1\n additionalProperties: false\n $id: https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.timer/1.0.0.schema.json\nimplements:\n - contract: mdbase.runtime.timer\n version: 1.0.0\n fields:\n type: type\n id: id\n generation: generation\n status: status\n fire_at: fire_at\n event: event\n missed_run_policy: missed_run_policy\n created_at: created_at\n updated_at: updated_at\n fired_at: fired_at\n---\n\n# Runtime timer\n\nThis canonical type makes `runtime_timer` records discoverable through\nthe ordinary mdbase record-contract registry.\n" - }, - { - "source": "schemas/mdbase.runtime.diagnostic/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"mdbase durable runtime diagnostic\",\n \"type\": \"object\",\n \"required\": [\n \"type\",\n \"id\",\n \"severity\",\n \"code\",\n \"message\",\n \"created_at\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"runtime_diagnostic\"\n },\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"severity\": {\n \"enum\": [\n \"info\",\n \"warning\",\n \"error\"\n ]\n },\n \"code\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"message\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"run_id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"attempt_id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"details\": {},\n \"created_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"identifier\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"semanticVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n },\n \"dateTime\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"contractRequirement\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"exactContractReference\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\",\n \"digest\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"identity\": {\n \"type\": \"object\",\n \"required\": [\n \"application\",\n \"implementation\",\n \"version\"\n ],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"providerSelector\": {\n \"type\": \"object\",\n \"required\": [],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"minProperties\": 1\n },\n \"expression\": {\n \"type\": \"object\",\n \"required\": [\n \"$expr\"\n ],\n \"properties\": {\n \"$expr\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"additionalProperties\": false\n }\n },\n \"$id\": \"https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.diagnostic/1.0.0.schema.json\"\n}\n" - }, - { - "source": "contracts/mdbase.runtime.diagnostic/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.runtime.diagnostic\nversion: 1.0.0\nname: Runtime diagnostic\ndescription: A machine-readable durable runtime diagnostic.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.runtime.diagnostic/1.0.0.schema.json\n---\n\n# Runtime diagnostic\n\nA machine-readable durable runtime diagnostic.\n\nThis artifact is passive. Installing it or a type that implements it grants no\nauthority to execute workflows or invoke providers.\n" - }, - { - "source": "types/mdbase-runtime/diagnostic.md", - "document": "---\nkind: mdbase.type\nname: runtime_diagnostic\nversion: 1\ndescription: Canonical Markdown implementation of mdbase.runtime.diagnostic.\nmatch:\n where:\n type: runtime_diagnostic\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: mdbase durable runtime diagnostic\n type: object\n required:\n - type\n - id\n - severity\n - code\n - message\n - created_at\n properties:\n type:\n const: runtime_diagnostic\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n severity:\n enum:\n - info\n - warning\n - error\n code:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n message:\n type: string\n minLength: 1\n run_id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n attempt_id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n path:\n type: string\n details: {}\n created_at:\n type: string\n format: date-time\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n $defs:\n identifier:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n semanticVersion:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n dateTime:\n type: string\n format: date-time\n contractRequirement:\n type: object\n required:\n - id\n - version\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n minLength: 1\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n exactContractReference:\n type: object\n required:\n - id\n - version\n - digest\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n identity:\n type: object\n required:\n - application\n - implementation\n - version\n properties:\n application:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n implementation:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n instance_id:\n type: string\n minLength: 1\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n providerSelector:\n type: object\n required: []\n properties:\n application:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n implementation:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n instance_id:\n type: string\n minLength: 1\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n minProperties: 1\n expression:\n type: object\n required:\n - $expr\n properties:\n $expr:\n type: string\n minLength: 1\n additionalProperties: false\n $id: https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.diagnostic/1.0.0.schema.json\nimplements:\n - contract: mdbase.runtime.diagnostic\n version: 1.0.0\n fields:\n type: type\n id: id\n severity: severity\n code: code\n message: message\n run_id: run_id\n attempt_id: attempt_id\n path: path\n details: details\n created_at: created_at\n---\n\n# Runtime diagnostic\n\nThis canonical type makes `runtime_diagnostic` records discoverable through\nthe ordinary mdbase record-contract registry.\n" - }, - { - "source": "schemas/mdbase.runtime.dead-letter/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"mdbase durable runtime dead letter\",\n \"type\": \"object\",\n \"required\": [\n \"type\",\n \"id\",\n \"reason\",\n \"status\",\n \"evidence\",\n \"created_at\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"runtime_dead_letter\"\n },\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"reason\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"status\": {\n \"enum\": [\n \"unresolved\",\n \"acknowledged\",\n \"requeued\"\n ]\n },\n \"evidence_kind\": {\n \"enum\": [\n \"event\",\n \"action_request\",\n \"action_outcome\"\n ]\n },\n \"evidence\": {\n \"type\": \"object\"\n },\n \"created_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"acknowledged_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"identifier\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"semanticVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n },\n \"dateTime\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"contractRequirement\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"exactContractReference\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\",\n \"digest\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"identity\": {\n \"type\": \"object\",\n \"required\": [\n \"application\",\n \"implementation\",\n \"version\"\n ],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"providerSelector\": {\n \"type\": \"object\",\n \"required\": [],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"minProperties\": 1\n },\n \"expression\": {\n \"type\": \"object\",\n \"required\": [\n \"$expr\"\n ],\n \"properties\": {\n \"$expr\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"additionalProperties\": false\n }\n },\n \"$id\": \"https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.dead-letter/1.0.0.schema.json\"\n}\n" - }, - { - "source": "contracts/mdbase.runtime.dead-letter/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.runtime.dead-letter\nversion: 1.0.0\nname: Runtime dead letter\ndescription: Retained event or action evidence that cannot be processed safely.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.runtime.dead-letter/1.0.0.schema.json\n---\n\n# Runtime dead letter\n\nRetained event or action evidence that cannot be processed safely.\n\nThis artifact is passive. Installing it or a type that implements it grants no\nauthority to execute workflows or invoke providers.\n" - }, - { - "source": "types/mdbase-runtime/dead-letter.md", - "document": "---\nkind: mdbase.type\nname: runtime_dead_letter\nversion: 1\ndescription: Canonical Markdown implementation of mdbase.runtime.dead-letter.\nmatch:\n where:\n type: runtime_dead_letter\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: mdbase durable runtime dead letter\n type: object\n required:\n - type\n - id\n - reason\n - status\n - evidence\n - created_at\n properties:\n type:\n const: runtime_dead_letter\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n reason:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n status:\n enum:\n - unresolved\n - acknowledged\n - requeued\n evidence_kind:\n enum:\n - event\n - action_request\n - action_outcome\n evidence:\n type: object\n created_at:\n type: string\n format: date-time\n acknowledged_at:\n type: string\n format: date-time\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n $defs:\n identifier:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n semanticVersion:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n dateTime:\n type: string\n format: date-time\n contractRequirement:\n type: object\n required:\n - id\n - version\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n minLength: 1\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n exactContractReference:\n type: object\n required:\n - id\n - version\n - digest\n properties:\n id:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n digest:\n type: string\n pattern: ^sha256:[0-9a-f]{64}$\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n identity:\n type: object\n required:\n - application\n - implementation\n - version\n properties:\n application:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n implementation:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n version:\n type: string\n pattern: ^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$\n instance_id:\n type: string\n minLength: 1\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n providerSelector:\n type: object\n required: []\n properties:\n application:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n implementation:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n instance_id:\n type: string\n minLength: 1\n patternProperties:\n ^x-[A-Za-z0-9._:-]+$: true\n additionalProperties: false\n minProperties: 1\n expression:\n type: object\n required:\n - $expr\n properties:\n $expr:\n type: string\n minLength: 1\n additionalProperties: false\n $id: https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.dead-letter/1.0.0.schema.json\nimplements:\n - contract: mdbase.runtime.dead-letter\n version: 1.0.0\n fields:\n type: type\n id: id\n reason: reason\n status: status\n evidence_kind: evidence_kind\n evidence: evidence\n created_at: created_at\n acknowledged_at: acknowledged_at\n---\n\n# Runtime dead letter\n\nThis canonical type makes `runtime_dead_letter` records discoverable through\nthe ordinary mdbase record-contract registry.\n" - }, - { - "source": "schemas/mdbase.record.created/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"mdbase record-created event data\",\n \"type\": \"object\",\n \"required\": [\n \"path\",\n \"after\",\n \"changed_fields\",\n \"revision\",\n \"types\"\n ],\n \"properties\": {\n \"path\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"after\": {\n \"type\": \"object\"\n },\n \"changed_fields\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"revision\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"types\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n }\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"identifier\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"semanticVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n },\n \"dateTime\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"contractRequirement\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"exactContractReference\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\",\n \"digest\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"identity\": {\n \"type\": \"object\",\n \"required\": [\n \"application\",\n \"implementation\",\n \"version\"\n ],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"providerSelector\": {\n \"type\": \"object\",\n \"required\": [],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"minProperties\": 1\n },\n \"expression\": {\n \"type\": \"object\",\n \"required\": [\n \"$expr\"\n ],\n \"properties\": {\n \"$expr\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"additionalProperties\": false\n }\n },\n \"$id\": \"https://mdbase.dev/schemas/runtime/v0.2/mdbase.record.created/1.0.0.schema.json\"\n}\n" - }, - { - "source": "contracts/mdbase.record.created/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: event\nid: mdbase.record.created\nversion: 1.0.0\nname: Record created\ndescription: Published after a record is created and derived collection state is consistent.\ndata_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.record.created/1.0.0.schema.json\n---\n\n# Record created\n\nThis built-in is an ordinary, inspectable contract artifact. Runtime exchange\nuses the mdbase interoperability profile unchanged.\n" - }, - { - "source": "schemas/mdbase.record.modified/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"mdbase record-modified event data\",\n \"type\": \"object\",\n \"required\": [\n \"path\",\n \"before\",\n \"after\",\n \"changed_fields\",\n \"previous_revision\",\n \"revision\",\n \"previous_types\",\n \"types\"\n ],\n \"properties\": {\n \"path\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"before\": {\n \"type\": \"object\"\n },\n \"after\": {\n \"type\": \"object\"\n },\n \"changed_fields\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"previous_revision\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"revision\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"previous_types\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n }\n },\n \"types\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n }\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"identifier\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"semanticVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n },\n \"dateTime\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"contractRequirement\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"exactContractReference\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\",\n \"digest\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"identity\": {\n \"type\": \"object\",\n \"required\": [\n \"application\",\n \"implementation\",\n \"version\"\n ],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"providerSelector\": {\n \"type\": \"object\",\n \"required\": [],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"minProperties\": 1\n },\n \"expression\": {\n \"type\": \"object\",\n \"required\": [\n \"$expr\"\n ],\n \"properties\": {\n \"$expr\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"additionalProperties\": false\n }\n },\n \"$id\": \"https://mdbase.dev/schemas/runtime/v0.2/mdbase.record.modified/1.0.0.schema.json\"\n}\n" - }, - { - "source": "contracts/mdbase.record.modified/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: event\nid: mdbase.record.modified\nversion: 1.0.0\nname: Record modified\ndescription: Published after a record is modified and derived collection state is consistent.\ndata_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.record.modified/1.0.0.schema.json\n---\n\n# Record modified\n\nThis built-in is an ordinary, inspectable contract artifact. Runtime exchange\nuses the mdbase interoperability profile unchanged.\n" - }, - { - "source": "schemas/mdbase.record.deleted/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"mdbase record-deleted event data\",\n \"type\": \"object\",\n \"required\": [\n \"path\",\n \"before\",\n \"previous_revision\",\n \"types\"\n ],\n \"properties\": {\n \"path\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"before\": {\n \"type\": \"object\"\n },\n \"previous_revision\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"types\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n }\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"identifier\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"semanticVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n },\n \"dateTime\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"contractRequirement\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"exactContractReference\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\",\n \"digest\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"identity\": {\n \"type\": \"object\",\n \"required\": [\n \"application\",\n \"implementation\",\n \"version\"\n ],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"providerSelector\": {\n \"type\": \"object\",\n \"required\": [],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"minProperties\": 1\n },\n \"expression\": {\n \"type\": \"object\",\n \"required\": [\n \"$expr\"\n ],\n \"properties\": {\n \"$expr\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"additionalProperties\": false\n }\n },\n \"$id\": \"https://mdbase.dev/schemas/runtime/v0.2/mdbase.record.deleted/1.0.0.schema.json\"\n}\n" - }, - { - "source": "contracts/mdbase.record.deleted/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: event\nid: mdbase.record.deleted\nversion: 1.0.0\nname: Record deleted\ndescription: Published after a record is deleted and derived collection state is consistent.\ndata_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.record.deleted/1.0.0.schema.json\n---\n\n# Record deleted\n\nThis built-in is an ordinary, inspectable contract artifact. Runtime exchange\nuses the mdbase interoperability profile unchanged.\n" - }, - { - "source": "schemas/mdbase.record.renamed/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"mdbase record-renamed event data\",\n \"type\": \"object\",\n \"required\": [\n \"from\",\n \"to\",\n \"before\",\n \"after\",\n \"previous_revision\",\n \"revision\",\n \"previous_types\",\n \"types\"\n ],\n \"properties\": {\n \"from\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"to\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"before\": {\n \"type\": \"object\"\n },\n \"after\": {\n \"type\": \"object\"\n },\n \"previous_revision\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"revision\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"previous_types\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n }\n },\n \"types\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n }\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"identifier\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"semanticVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n },\n \"dateTime\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"contractRequirement\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"exactContractReference\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\",\n \"digest\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"identity\": {\n \"type\": \"object\",\n \"required\": [\n \"application\",\n \"implementation\",\n \"version\"\n ],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"providerSelector\": {\n \"type\": \"object\",\n \"required\": [],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"minProperties\": 1\n },\n \"expression\": {\n \"type\": \"object\",\n \"required\": [\n \"$expr\"\n ],\n \"properties\": {\n \"$expr\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"additionalProperties\": false\n }\n },\n \"$id\": \"https://mdbase.dev/schemas/runtime/v0.2/mdbase.record.renamed/1.0.0.schema.json\"\n}\n" - }, - { - "source": "contracts/mdbase.record.renamed/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: event\nid: mdbase.record.renamed\nversion: 1.0.0\nname: Record renamed\ndescription: Published after a record is renamed and derived collection state is consistent.\ndata_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.record.renamed/1.0.0.schema.json\n---\n\n# Record renamed\n\nThis built-in is an ordinary, inspectable contract artifact. Runtime exchange\nuses the mdbase interoperability profile unchanged.\n" - }, - { - "source": "schemas/mdbase.runtime.timer.fired/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"mdbase runtime timer-fired event data\",\n \"type\": \"object\",\n \"required\": [\n \"timer_id\",\n \"generation\",\n \"scheduled_for\",\n \"fired_at\",\n \"late_by_ms\",\n \"data\"\n ],\n \"properties\": {\n \"timer_id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"generation\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"scheduled_for\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"fired_at\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"late_by_ms\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"data\": {\n \"description\": \"Opaque application data supplied when the timer was scheduled.\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"identifier\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"semanticVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n },\n \"dateTime\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"contractRequirement\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"exactContractReference\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\",\n \"digest\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"identity\": {\n \"type\": \"object\",\n \"required\": [\n \"application\",\n \"implementation\",\n \"version\"\n ],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"providerSelector\": {\n \"type\": \"object\",\n \"required\": [],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"minProperties\": 1\n },\n \"expression\": {\n \"type\": \"object\",\n \"required\": [\n \"$expr\"\n ],\n \"properties\": {\n \"$expr\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"additionalProperties\": false\n }\n },\n \"$id\": \"https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.timer.fired/1.0.0.schema.json\"\n}\n" - }, - { - "source": "contracts/mdbase.runtime.timer.fired/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: event\nid: mdbase.runtime.timer.fired\nversion: 1.0.0\nname: Runtime timer fired\ndescription: Published with scheduling evidence and opaque application data when the current generation of a durable timer fires.\ndata_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.runtime.timer.fired/1.0.0.schema.json\n---\n\n# Runtime timer fired\n\nThis built-in is an ordinary, inspectable contract artifact. Runtime exchange\nuses the mdbase interoperability profile unchanged.\n" - }, - { - "source": "schemas/mdbase.runtime.run.cancel/1.0.0.output.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"mdbase runtime run-cancel action output\",\n \"type\": \"object\",\n \"required\": [\n \"run_id\",\n \"status\"\n ],\n \"properties\": {\n \"run_id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"status\": {\n \"enum\": [\n \"cancellation_requested\",\n \"already_terminal\"\n ]\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"identifier\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"semanticVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n },\n \"dateTime\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"contractRequirement\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"exactContractReference\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\",\n \"digest\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"identity\": {\n \"type\": \"object\",\n \"required\": [\n \"application\",\n \"implementation\",\n \"version\"\n ],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"providerSelector\": {\n \"type\": \"object\",\n \"required\": [],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"minProperties\": 1\n },\n \"expression\": {\n \"type\": \"object\",\n \"required\": [\n \"$expr\"\n ],\n \"properties\": {\n \"$expr\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"additionalProperties\": false\n }\n },\n \"$id\": \"https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.run.cancel/1.0.0.output.schema.json\"\n}\n" - }, - { - "source": "schemas/mdbase.runtime.run.cancel/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"mdbase runtime run-cancel action input\",\n \"type\": \"object\",\n \"required\": [\n \"run_id\"\n ],\n \"properties\": {\n \"run_id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"reason\": {\n \"type\": \"string\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"identifier\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"semanticVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n },\n \"dateTime\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"contractRequirement\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"exactContractReference\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"version\",\n \"digest\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\"\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"identity\": {\n \"type\": \"object\",\n \"required\": [\n \"application\",\n \"implementation\",\n \"version\"\n ],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false\n },\n \"providerSelector\": {\n \"type\": \"object\",\n \"required\": [],\n \"properties\": {\n \"application\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"implementation\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z0-9._:-]+$\": true\n },\n \"additionalProperties\": false,\n \"minProperties\": 1\n },\n \"expression\": {\n \"type\": \"object\",\n \"required\": [\n \"$expr\"\n ],\n \"properties\": {\n \"$expr\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"additionalProperties\": false\n }\n },\n \"$id\": \"https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.run.cancel/1.0.0.schema.json\"\n}\n" - }, - { - "source": "contracts/mdbase.runtime.run.cancel/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: action\nid: mdbase.runtime.run.cancel\nversion: 1.0.0\nname: Cancel durable runtime run\ndescription: Request cooperative cancellation of one durable runtime run.\ninput_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.runtime.run.cancel/1.0.0.schema.json\noutput_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.runtime.run.cancel/1.0.0.output.schema.json\nbehavior:\n idempotency: required\n cancellation: none\n---\n\n# Cancel durable runtime run\n\nThis built-in is an ordinary, inspectable contract artifact. Runtime exchange\nuses the mdbase interoperability profile unchanged.\n" - } - ], - "provides": [ - { - "id": "mdbase.runtime.action-attempt", - "version": "1.0.0", - "digest": "sha256:06c3c86d3eb742050c26486a637acad8816399c87c7e981114cc3e1836873057" - }, - { - "id": "mdbase.runtime.capability-grant", - "version": "1.0.0", - "digest": "sha256:409aab0a7341788e1791ee6e47b5ff96b6b280e0f1dc3b6e18d467e5fc4bd971" - }, - { - "id": "mdbase.runtime.checkpoint", - "version": "1.0.0", - "digest": "sha256:e66aaa1ed134f5951308952cc681a0314c7322b25142a2dbcd2a0e76fffd8ebc" - }, - { - "id": "mdbase.runtime.dead-letter", - "version": "1.0.0", - "digest": "sha256:75428a52dd283104624b9177c5e90658375c6f6cceb27334af4243dc7b293ce4" - }, - { - "id": "mdbase.runtime.diagnostic", - "version": "1.0.0", - "digest": "sha256:ac2ad3683005373330b2b95b02a603d329ca4934f9ba5cc3294562e1f66e5004" - }, - { - "id": "mdbase.runtime.policy", - "version": "1.0.0", - "digest": "sha256:a67936dd3e29d50d85cd7004f350f38f76a773412fb74fca69b578e8f82e23a1" - }, - { - "id": "mdbase.runtime.provider-registration", - "version": "1.0.0", - "digest": "sha256:560c44fe51baf9357705e46c27d89b13b161f14ebe0b62d2d091048bbcf70587" - }, - { - "id": "mdbase.runtime.run", - "version": "1.0.0", - "digest": "sha256:1d6f66ae39655bbdd57d800b51493ec49ba81ddfd12f7b07b731cd6cf90eac02" - }, - { - "id": "mdbase.runtime.timer", - "version": "1.0.0", - "digest": "sha256:22bdd0bcfc4b2c59705526484c9d0d4d0580fb87abd2e9beae93d4464174602f" - }, - { - "id": "mdbase.runtime.workflow", - "version": "1.0.0", - "digest": "sha256:4ca1095cbe226ac5fc4394af0242fac9e4cb0e3c73a6a8a5f4899fac5d373604" - } - ] -} diff --git a/public/contracts/packs/mdbase.view/1.0.0.json b/public/contracts/packs/mdbase.view/1.0.0.json deleted file mode 100644 index 210fa58..0000000 --- a/public/contracts/packs/mdbase.view/1.0.0.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "manifest": { - "kind": "mdbase.type-pack", - "id": "mdbase.view", - "version": "1.0.0", - "name": "Saved views", - "description": "The mdbase.view contract and an editable View type for saved, reusable queries.", - "resources": [ - { - "kind": "schema", - "mode": "managed", - "source": "schemas/mdbase.view/1.0.0.schema.json", - "target": "schemas/mdbase.view/1.0.0.schema.json", - "digest": "sha256:d58b8b691c14d59f0575fc1cc93ab5b46363c485e4469bc58039ec0cece7ca36" - }, - { - "kind": "contract", - "mode": "managed", - "source": "contracts/mdbase.view/1.0.0.md", - "target": "_contracts/mdbase.view/1.0.0.md", - "digest": "sha256:91eae42371c2d411b20d3c976aece3071bbd753963b77b6bcdc26137a8fdcded" - }, - { - "kind": "type", - "mode": "seed", - "source": "types/view/1.md", - "target": "_types/view.md", - "digest": "sha256:480919f6f88f91592abb9fe7971f09e874d536c6883981616b181cf14cbe7ff4" - } - ] - }, - "resources": [ - { - "source": "schemas/mdbase.view/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://mdbase.dev/schemas/v0.3/view.schema.json\",\n \"title\": \"mdbase.view 1.0.0 record contract view\",\n \"description\": \"The contract view of a saved-view record. A type implements mdbase.view by mapping these fields; the optional type property only lets the canonical view type validate its own membership value.\",\n \"type\": \"object\",\n \"required\": [\"id\", \"version\", \"name\", \"views\"],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"minLength\": 1 },\n \"id\": { \"$ref\": \"#/$defs/identifier\" },\n \"version\": { \"type\": \"integer\", \"minimum\": 1 },\n \"name\": { \"type\": \"string\", \"minLength\": 1 },\n \"description\": { \"type\": \"string\" },\n \"query\": { \"$ref\": \"#/$defs/sharedQuery\" },\n \"properties\": { \"$ref\": \"#/$defs/propertyMetadataSet\" },\n \"summary_functions\": { \"$ref\": \"#/$defs/summaryFunctionSet\" },\n \"views\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": { \"$ref\": \"#/$defs/view\" }\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$\": { \"$ref\": \"#/$defs/extension\" }\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"identifier\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"typeName\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9_-]{0,127}$\"\n },\n \"fieldName\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z_][A-Za-z0-9_:-]*$\"\n },\n \"expression\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"extension\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n },\n \"typeList\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"uniqueItems\": true,\n \"items\": { \"$ref\": \"#/$defs/typeName\" }\n },\n \"sharedQuery\": {\n \"type\": \"object\",\n \"properties\": {\n \"types\": { \"$ref\": \"#/$defs/typeList\" },\n \"where\": { \"$ref\": \"#/$defs/expression\" },\n \"context\": { \"$ref\": \"#/$defs/viewContext\" },\n \"projections\": { \"$ref\": \"#/$defs/projectionSet\" }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$\": { \"$ref\": \"#/$defs/extension\" }\n },\n \"additionalProperties\": false\n },\n \"viewContext\": {\n \"type\": \"object\",\n \"required\": [\"this\"],\n \"properties\": {\n \"this\": { \"$ref\": \"#/$defs/thisContext\" }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$\": { \"$ref\": \"#/$defs/extension\" }\n },\n \"additionalProperties\": false\n },\n \"thisContext\": {\n \"type\": \"object\",\n \"properties\": {\n \"on_missing\": {\n \"enum\": [\"view\", \"null\", \"error\"],\n \"default\": \"view\"\n },\n \"types\": { \"$ref\": \"#/$defs/typeList\" }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$\": { \"$ref\": \"#/$defs/extension\" }\n },\n \"additionalProperties\": false\n },\n \"projectionSet\": {\n \"type\": \"object\",\n \"propertyNames\": { \"$ref\": \"#/$defs/fieldName\" },\n \"additionalProperties\": { \"$ref\": \"#/$defs/projection\" }\n },\n \"projection\": {\n \"type\": \"object\",\n \"required\": [\"expr\"],\n \"properties\": {\n \"expr\": { \"$ref\": \"#/$defs/expression\" },\n \"description\": { \"type\": \"string\" }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$\": { \"$ref\": \"#/$defs/extension\" }\n },\n \"additionalProperties\": false\n },\n \"propertyMetadataSet\": {\n \"type\": \"object\",\n \"propertyNames\": { \"type\": \"string\", \"minLength\": 1 },\n \"additionalProperties\": { \"$ref\": \"#/$defs/propertyMetadata\" }\n },\n \"propertyMetadata\": {\n \"type\": \"object\",\n \"properties\": {\n \"label\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"format\": { \"type\": \"string\" },\n \"hidden\": { \"type\": \"boolean\" }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$\": { \"$ref\": \"#/$defs/extension\" }\n },\n \"additionalProperties\": false\n },\n \"summaryFunctionSet\": {\n \"type\": \"object\",\n \"propertyNames\": { \"$ref\": \"#/$defs/fieldName\" },\n \"additionalProperties\": { \"$ref\": \"#/$defs/summaryFunction\" }\n },\n \"summaryFunction\": {\n \"type\": \"object\",\n \"required\": [\"expr\"],\n \"properties\": {\n \"expr\": { \"$ref\": \"#/$defs/expression\" },\n \"description\": { \"type\": \"string\" }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$\": { \"$ref\": \"#/$defs/extension\" }\n },\n \"additionalProperties\": false\n },\n \"view\": {\n \"type\": \"object\",\n \"required\": [\"id\", \"name\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/identifier\" },\n \"name\": { \"type\": \"string\", \"minLength\": 1 },\n \"description\": { \"type\": \"string\" },\n \"types\": { \"$ref\": \"#/$defs/typeList\" },\n \"where\": { \"$ref\": \"#/$defs/expression\" },\n \"context\": { \"$ref\": \"#/$defs/viewContext\" },\n \"projections\": { \"$ref\": \"#/$defs/projectionSet\" },\n \"select\": { \"$ref\": \"#/$defs/select\" },\n \"order_by\": { \"$ref\": \"#/$defs/orderBy\" },\n \"group_by\": { \"$ref\": \"#/$defs/groupBy\" },\n \"summaries\": { \"$ref\": \"#/$defs/summaries\" },\n \"limit\": { \"type\": \"integer\", \"minimum\": 0 },\n \"offset\": { \"type\": \"integer\", \"minimum\": 0 },\n \"include_body\": { \"type\": \"boolean\", \"default\": false },\n \"frontmatter_mode\": {\n \"enum\": [\"effective\", \"persisted\", \"both\"],\n \"default\": \"effective\"\n },\n \"presentation\": { \"$ref\": \"#/$defs/presentation\" }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$\": { \"$ref\": \"#/$defs/extension\" }\n },\n \"additionalProperties\": false\n },\n \"select\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"oneOf\": [\n { \"type\": \"string\", \"minLength\": 1 },\n { \"$ref\": \"#/$defs/selectExpression\" }\n ]\n }\n },\n \"selectExpression\": {\n \"type\": \"object\",\n \"required\": [\"name\", \"expr\"],\n \"properties\": {\n \"name\": { \"$ref\": \"#/$defs/fieldName\" },\n \"expr\": { \"$ref\": \"#/$defs/expression\" },\n \"label\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$\": { \"$ref\": \"#/$defs/extension\" }\n },\n \"additionalProperties\": false\n },\n \"orderBy\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"type\": \"object\",\n \"required\": [\"field\"],\n \"properties\": {\n \"field\": { \"type\": \"string\", \"minLength\": 1 },\n \"direction\": { \"enum\": [\"asc\", \"desc\"], \"default\": \"asc\" }\n },\n \"additionalProperties\": false\n }\n },\n \"groupBy\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"type\": \"object\",\n \"required\": [\"field\"],\n \"properties\": {\n \"field\": { \"type\": \"string\", \"minLength\": 1 },\n \"direction\": { \"enum\": [\"asc\", \"desc\"], \"default\": \"asc\" }\n },\n \"additionalProperties\": false\n }\n },\n \"summaries\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": { \"$ref\": \"#/$defs/summary\" }\n },\n \"summary\": {\n \"type\": \"object\",\n \"required\": [\"field\", \"function\"],\n \"properties\": {\n \"field\": { \"type\": \"string\", \"minLength\": 1 },\n \"function\": { \"$ref\": \"#/$defs/identifier\" },\n \"name\": { \"$ref\": \"#/$defs/fieldName\" },\n \"label\": { \"type\": \"string\" }\n },\n \"additionalProperties\": false\n },\n \"presentation\": {\n \"type\": \"object\",\n \"required\": [\"type\"],\n \"properties\": {\n \"type\": { \"$ref\": \"#/$defs/identifier\" },\n \"fallback\": { \"$ref\": \"#/$defs/identifier\" },\n \"mappings\": {\n \"type\": \"object\",\n \"propertyNames\": { \"$ref\": \"#/$defs/fieldName\" },\n \"additionalProperties\": { \"type\": \"string\", \"minLength\": 1 }\n },\n \"options\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$\": { \"$ref\": \"#/$defs/extension\" }\n },\n \"additionalProperties\": false\n }\n }\n}\n" - }, - { - "source": "contracts/mdbase.view/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.view\nversion: 1.0.0\nname: Saved view\ndescription: Shared query scope and stable named views executable through the Query profile.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.view/1.0.0.schema.json\n---\n\n# Saved view\n\nA record exposed through `mdbase.view` stores shared query scope and one or more\nstable named views. Each named view resolves to the query model in Chapter 11.\nOptional `presentation` metadata is advisory and does not alter headless query\nresults.\n\nImplementing this contract is how a collection declares which of its records\nare saved views. A tool that advertises `view_records` discovers and executes\nviews through this contract's type implementations, not through a reserved type\nname, path, or frontmatter value.\n\nThis artifact is passive. Implementing it grants no authority to read, execute,\nor modify any record.\n" - }, - { - "source": "types/view/1.md", - "document": "---\nkind: mdbase.type\nname: view\nversion: 1\ndescription: 'Saved views: shared query scope and stable named views'\nmatch:\n where:\n type: view\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: View\n description: 'Saved views: shared query scope and stable named views.'\n type: object\n required:\n - type\n - id\n - version\n - name\n - views\n properties:\n type:\n const: view\n id:\n $ref: '#/$defs/identifier'\n version:\n type: integer\n minimum: 1\n name:\n type: string\n minLength: 1\n description:\n type: string\n query:\n $ref: '#/$defs/sharedQuery'\n properties:\n $ref: '#/$defs/propertyMetadataSet'\n summary_functions:\n $ref: '#/$defs/summaryFunctionSet'\n views:\n type: array\n minItems: 1\n items:\n $ref: '#/$defs/view'\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n $defs:\n identifier:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n typeName:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9_-]{0,127}$\n fieldName:\n type: string\n pattern: ^[A-Za-z_][A-Za-z0-9_:-]*$\n expression:\n type: string\n minLength: 1\n extension:\n type: object\n additionalProperties: true\n typeList:\n type: array\n minItems: 1\n uniqueItems: true\n items:\n $ref: '#/$defs/typeName'\n sharedQuery:\n type: object\n properties:\n types:\n $ref: '#/$defs/typeList'\n where:\n $ref: '#/$defs/expression'\n context:\n $ref: '#/$defs/viewContext'\n projections:\n $ref: '#/$defs/projectionSet'\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n viewContext:\n type: object\n required:\n - this\n properties:\n this:\n $ref: '#/$defs/thisContext'\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n thisContext:\n type: object\n properties:\n on_missing:\n enum:\n - view\n - 'null'\n - error\n default: view\n types:\n $ref: '#/$defs/typeList'\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n projectionSet:\n type: object\n propertyNames:\n $ref: '#/$defs/fieldName'\n additionalProperties:\n $ref: '#/$defs/projection'\n projection:\n type: object\n required:\n - expr\n properties:\n expr:\n $ref: '#/$defs/expression'\n description:\n type: string\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n propertyMetadataSet:\n type: object\n propertyNames:\n type: string\n minLength: 1\n additionalProperties:\n $ref: '#/$defs/propertyMetadata'\n propertyMetadata:\n type: object\n properties:\n label:\n type: string\n description:\n type: string\n format:\n type: string\n hidden:\n type: boolean\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n summaryFunctionSet:\n type: object\n propertyNames:\n $ref: '#/$defs/fieldName'\n additionalProperties:\n $ref: '#/$defs/summaryFunction'\n summaryFunction:\n type: object\n required:\n - expr\n properties:\n expr:\n $ref: '#/$defs/expression'\n description:\n type: string\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n view:\n type: object\n required:\n - id\n - name\n properties:\n id:\n $ref: '#/$defs/identifier'\n name:\n type: string\n minLength: 1\n description:\n type: string\n types:\n $ref: '#/$defs/typeList'\n where:\n $ref: '#/$defs/expression'\n context:\n $ref: '#/$defs/viewContext'\n projections:\n $ref: '#/$defs/projectionSet'\n select:\n $ref: '#/$defs/select'\n order_by:\n $ref: '#/$defs/orderBy'\n group_by:\n $ref: '#/$defs/groupBy'\n summaries:\n $ref: '#/$defs/summaries'\n limit:\n type: integer\n minimum: 0\n offset:\n type: integer\n minimum: 0\n include_body:\n type: boolean\n default: false\n frontmatter_mode:\n enum:\n - effective\n - persisted\n - both\n default: effective\n presentation:\n $ref: '#/$defs/presentation'\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n select:\n type: array\n minItems: 1\n items:\n oneOf:\n - type: string\n minLength: 1\n - $ref: '#/$defs/selectExpression'\n selectExpression:\n type: object\n required:\n - name\n - expr\n properties:\n name:\n $ref: '#/$defs/fieldName'\n expr:\n $ref: '#/$defs/expression'\n label:\n type: string\n description:\n type: string\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n orderBy:\n type: array\n minItems: 1\n items:\n type: object\n required:\n - field\n properties:\n field:\n type: string\n minLength: 1\n direction:\n enum:\n - asc\n - desc\n default: asc\n additionalProperties: false\n groupBy:\n type: array\n minItems: 1\n items:\n type: object\n required:\n - field\n properties:\n field:\n type: string\n minLength: 1\n direction:\n enum:\n - asc\n - desc\n default: asc\n additionalProperties: false\n summaries:\n type: array\n minItems: 1\n items:\n $ref: '#/$defs/summary'\n summary:\n type: object\n required:\n - field\n - function\n properties:\n field:\n type: string\n minLength: 1\n function:\n $ref: '#/$defs/identifier'\n name:\n $ref: '#/$defs/fieldName'\n label:\n type: string\n additionalProperties: false\n presentation:\n type: object\n required:\n - type\n properties:\n type:\n $ref: '#/$defs/identifier'\n fallback:\n $ref: '#/$defs/identifier'\n mappings:\n type: object\n propertyNames:\n $ref: '#/$defs/fieldName'\n additionalProperties:\n type: string\n minLength: 1\n options:\n type: object\n additionalProperties: true\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\nimplements:\n- contract: mdbase.view\n version: 1.0.0\n fields:\n id: id\n version: version\n name: name\n description: description\n query: query\n properties: properties\n summary_functions: summary_functions\n views: views\ncollection:\n display:\n name_field: name\n---\n\n# View\n\nA view record stores shared query scope and one or more stable named views.\nTools that support saved views discover these records through the `mdbase.view`\ncontract and run each named view as an ordinary query.\n\nThis type belongs to your collection once installed. You can rename fields or\nchange how records are matched, as long as the `implements` mapping still\npoints each contract field at the right frontmatter field.\n" - } - ], - "provides": [ - { - "id": "mdbase.view", - "version": "1.0.0", - "digest": "sha256:0918acefce08cddd778fab768fe4f2e4615d263a0eec3e5330b6897c686d744e" - } - ] -} diff --git a/public/contracts/packs/mdbase.view/1.0.1.json b/public/contracts/packs/mdbase.view/1.0.1.json deleted file mode 100644 index 9920836..0000000 --- a/public/contracts/packs/mdbase.view/1.0.1.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "manifest": { - "kind": "mdbase.type-pack", - "id": "mdbase.view", - "version": "1.0.1", - "name": "Saved views", - "description": "The mdbase.view contract and an editable View type for saved, reusable queries.", - "resources": [ - { - "kind": "schema", - "mode": "managed", - "source": "schemas/mdbase.view/1.0.0.schema.json", - "target": "schemas/mdbase.view/1.0.0.schema.json", - "digest": "sha256:d58b8b691c14d59f0575fc1cc93ab5b46363c485e4469bc58039ec0cece7ca36" - }, - { - "kind": "contract", - "mode": "managed", - "source": "contracts/mdbase.view/1.0.0.md", - "target": "_contracts/mdbase.view/1.0.0.md", - "digest": "sha256:91eae42371c2d411b20d3c976aece3071bbd753963b77b6bcdc26137a8fdcded" - }, - { - "kind": "type", - "mode": "seed", - "source": "types/view/2.md", - "target": "_types/view.md", - "digest": "sha256:8d20e7fa19be79e5d4a1715397234123ffbcf65f575225d610873a7b9cd29372", - "upgrade_from": { - "digest": "sha256:480919f6f88f91592abb9fe7971f09e874d536c6883981616b181cf14cbe7ff4", - "document": "---\nkind: mdbase.type\nname: view\nversion: 1\ndescription: 'Saved views: shared query scope and stable named views'\nmatch:\n where:\n type: view\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: View\n description: 'Saved views: shared query scope and stable named views.'\n type: object\n required:\n - type\n - id\n - version\n - name\n - views\n properties:\n type:\n const: view\n id:\n $ref: '#/$defs/identifier'\n version:\n type: integer\n minimum: 1\n name:\n type: string\n minLength: 1\n description:\n type: string\n query:\n $ref: '#/$defs/sharedQuery'\n properties:\n $ref: '#/$defs/propertyMetadataSet'\n summary_functions:\n $ref: '#/$defs/summaryFunctionSet'\n views:\n type: array\n minItems: 1\n items:\n $ref: '#/$defs/view'\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n $defs:\n identifier:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n typeName:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9_-]{0,127}$\n fieldName:\n type: string\n pattern: ^[A-Za-z_][A-Za-z0-9_:-]*$\n expression:\n type: string\n minLength: 1\n extension:\n type: object\n additionalProperties: true\n typeList:\n type: array\n minItems: 1\n uniqueItems: true\n items:\n $ref: '#/$defs/typeName'\n sharedQuery:\n type: object\n properties:\n types:\n $ref: '#/$defs/typeList'\n where:\n $ref: '#/$defs/expression'\n context:\n $ref: '#/$defs/viewContext'\n projections:\n $ref: '#/$defs/projectionSet'\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n viewContext:\n type: object\n required:\n - this\n properties:\n this:\n $ref: '#/$defs/thisContext'\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n thisContext:\n type: object\n properties:\n on_missing:\n enum:\n - view\n - 'null'\n - error\n default: view\n types:\n $ref: '#/$defs/typeList'\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n projectionSet:\n type: object\n propertyNames:\n $ref: '#/$defs/fieldName'\n additionalProperties:\n $ref: '#/$defs/projection'\n projection:\n type: object\n required:\n - expr\n properties:\n expr:\n $ref: '#/$defs/expression'\n description:\n type: string\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n propertyMetadataSet:\n type: object\n propertyNames:\n type: string\n minLength: 1\n additionalProperties:\n $ref: '#/$defs/propertyMetadata'\n propertyMetadata:\n type: object\n properties:\n label:\n type: string\n description:\n type: string\n format:\n type: string\n hidden:\n type: boolean\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n summaryFunctionSet:\n type: object\n propertyNames:\n $ref: '#/$defs/fieldName'\n additionalProperties:\n $ref: '#/$defs/summaryFunction'\n summaryFunction:\n type: object\n required:\n - expr\n properties:\n expr:\n $ref: '#/$defs/expression'\n description:\n type: string\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n view:\n type: object\n required:\n - id\n - name\n properties:\n id:\n $ref: '#/$defs/identifier'\n name:\n type: string\n minLength: 1\n description:\n type: string\n types:\n $ref: '#/$defs/typeList'\n where:\n $ref: '#/$defs/expression'\n context:\n $ref: '#/$defs/viewContext'\n projections:\n $ref: '#/$defs/projectionSet'\n select:\n $ref: '#/$defs/select'\n order_by:\n $ref: '#/$defs/orderBy'\n group_by:\n $ref: '#/$defs/groupBy'\n summaries:\n $ref: '#/$defs/summaries'\n limit:\n type: integer\n minimum: 0\n offset:\n type: integer\n minimum: 0\n include_body:\n type: boolean\n default: false\n frontmatter_mode:\n enum:\n - effective\n - persisted\n - both\n default: effective\n presentation:\n $ref: '#/$defs/presentation'\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n select:\n type: array\n minItems: 1\n items:\n oneOf:\n - type: string\n minLength: 1\n - $ref: '#/$defs/selectExpression'\n selectExpression:\n type: object\n required:\n - name\n - expr\n properties:\n name:\n $ref: '#/$defs/fieldName'\n expr:\n $ref: '#/$defs/expression'\n label:\n type: string\n description:\n type: string\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n orderBy:\n type: array\n minItems: 1\n items:\n type: object\n required:\n - field\n properties:\n field:\n type: string\n minLength: 1\n direction:\n enum:\n - asc\n - desc\n default: asc\n additionalProperties: false\n groupBy:\n type: array\n minItems: 1\n items:\n type: object\n required:\n - field\n properties:\n field:\n type: string\n minLength: 1\n direction:\n enum:\n - asc\n - desc\n default: asc\n additionalProperties: false\n summaries:\n type: array\n minItems: 1\n items:\n $ref: '#/$defs/summary'\n summary:\n type: object\n required:\n - field\n - function\n properties:\n field:\n type: string\n minLength: 1\n function:\n $ref: '#/$defs/identifier'\n name:\n $ref: '#/$defs/fieldName'\n label:\n type: string\n additionalProperties: false\n presentation:\n type: object\n required:\n - type\n properties:\n type:\n $ref: '#/$defs/identifier'\n fallback:\n $ref: '#/$defs/identifier'\n mappings:\n type: object\n propertyNames:\n $ref: '#/$defs/fieldName'\n additionalProperties:\n type: string\n minLength: 1\n options:\n type: object\n additionalProperties: true\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\nimplements:\n- contract: mdbase.view\n version: 1.0.0\n fields:\n id: id\n version: version\n name: name\n description: description\n query: query\n properties: properties\n summary_functions: summary_functions\n views: views\ncollection:\n display:\n name_field: name\n---\n\n# View\n\nA view record stores shared query scope and one or more stable named views.\nTools that support saved views discover these records through the `mdbase.view`\ncontract and run each named view as an ordinary query.\n\nThis type belongs to your collection once installed. You can rename fields or\nchange how records are matched, as long as the `implements` mapping still\npoints each contract field at the right frontmatter field.\n" - } - } - ] - }, - "resources": [ - { - "source": "schemas/mdbase.view/1.0.0.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://mdbase.dev/schemas/v0.3/view.schema.json\",\n \"title\": \"mdbase.view 1.0.0 record contract view\",\n \"description\": \"The contract view of a saved-view record. A type implements mdbase.view by mapping these fields; the optional type property only lets the canonical view type validate its own membership value.\",\n \"type\": \"object\",\n \"required\": [\"id\", \"version\", \"name\", \"views\"],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"minLength\": 1 },\n \"id\": { \"$ref\": \"#/$defs/identifier\" },\n \"version\": { \"type\": \"integer\", \"minimum\": 1 },\n \"name\": { \"type\": \"string\", \"minLength\": 1 },\n \"description\": { \"type\": \"string\" },\n \"query\": { \"$ref\": \"#/$defs/sharedQuery\" },\n \"properties\": { \"$ref\": \"#/$defs/propertyMetadataSet\" },\n \"summary_functions\": { \"$ref\": \"#/$defs/summaryFunctionSet\" },\n \"views\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": { \"$ref\": \"#/$defs/view\" }\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$\": { \"$ref\": \"#/$defs/extension\" }\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"identifier\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9._:-]*$\"\n },\n \"typeName\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9_-]{0,127}$\"\n },\n \"fieldName\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z_][A-Za-z0-9_:-]*$\"\n },\n \"expression\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"extension\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n },\n \"typeList\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"uniqueItems\": true,\n \"items\": { \"$ref\": \"#/$defs/typeName\" }\n },\n \"sharedQuery\": {\n \"type\": \"object\",\n \"properties\": {\n \"types\": { \"$ref\": \"#/$defs/typeList\" },\n \"where\": { \"$ref\": \"#/$defs/expression\" },\n \"context\": { \"$ref\": \"#/$defs/viewContext\" },\n \"projections\": { \"$ref\": \"#/$defs/projectionSet\" }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$\": { \"$ref\": \"#/$defs/extension\" }\n },\n \"additionalProperties\": false\n },\n \"viewContext\": {\n \"type\": \"object\",\n \"required\": [\"this\"],\n \"properties\": {\n \"this\": { \"$ref\": \"#/$defs/thisContext\" }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$\": { \"$ref\": \"#/$defs/extension\" }\n },\n \"additionalProperties\": false\n },\n \"thisContext\": {\n \"type\": \"object\",\n \"properties\": {\n \"on_missing\": {\n \"enum\": [\"view\", \"null\", \"error\"],\n \"default\": \"view\"\n },\n \"types\": { \"$ref\": \"#/$defs/typeList\" }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$\": { \"$ref\": \"#/$defs/extension\" }\n },\n \"additionalProperties\": false\n },\n \"projectionSet\": {\n \"type\": \"object\",\n \"propertyNames\": { \"$ref\": \"#/$defs/fieldName\" },\n \"additionalProperties\": { \"$ref\": \"#/$defs/projection\" }\n },\n \"projection\": {\n \"type\": \"object\",\n \"required\": [\"expr\"],\n \"properties\": {\n \"expr\": { \"$ref\": \"#/$defs/expression\" },\n \"description\": { \"type\": \"string\" }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$\": { \"$ref\": \"#/$defs/extension\" }\n },\n \"additionalProperties\": false\n },\n \"propertyMetadataSet\": {\n \"type\": \"object\",\n \"propertyNames\": { \"type\": \"string\", \"minLength\": 1 },\n \"additionalProperties\": { \"$ref\": \"#/$defs/propertyMetadata\" }\n },\n \"propertyMetadata\": {\n \"type\": \"object\",\n \"properties\": {\n \"label\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"format\": { \"type\": \"string\" },\n \"hidden\": { \"type\": \"boolean\" }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$\": { \"$ref\": \"#/$defs/extension\" }\n },\n \"additionalProperties\": false\n },\n \"summaryFunctionSet\": {\n \"type\": \"object\",\n \"propertyNames\": { \"$ref\": \"#/$defs/fieldName\" },\n \"additionalProperties\": { \"$ref\": \"#/$defs/summaryFunction\" }\n },\n \"summaryFunction\": {\n \"type\": \"object\",\n \"required\": [\"expr\"],\n \"properties\": {\n \"expr\": { \"$ref\": \"#/$defs/expression\" },\n \"description\": { \"type\": \"string\" }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$\": { \"$ref\": \"#/$defs/extension\" }\n },\n \"additionalProperties\": false\n },\n \"view\": {\n \"type\": \"object\",\n \"required\": [\"id\", \"name\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/identifier\" },\n \"name\": { \"type\": \"string\", \"minLength\": 1 },\n \"description\": { \"type\": \"string\" },\n \"types\": { \"$ref\": \"#/$defs/typeList\" },\n \"where\": { \"$ref\": \"#/$defs/expression\" },\n \"context\": { \"$ref\": \"#/$defs/viewContext\" },\n \"projections\": { \"$ref\": \"#/$defs/projectionSet\" },\n \"select\": { \"$ref\": \"#/$defs/select\" },\n \"order_by\": { \"$ref\": \"#/$defs/orderBy\" },\n \"group_by\": { \"$ref\": \"#/$defs/groupBy\" },\n \"summaries\": { \"$ref\": \"#/$defs/summaries\" },\n \"limit\": { \"type\": \"integer\", \"minimum\": 0 },\n \"offset\": { \"type\": \"integer\", \"minimum\": 0 },\n \"include_body\": { \"type\": \"boolean\", \"default\": false },\n \"frontmatter_mode\": {\n \"enum\": [\"effective\", \"persisted\", \"both\"],\n \"default\": \"effective\"\n },\n \"presentation\": { \"$ref\": \"#/$defs/presentation\" }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$\": { \"$ref\": \"#/$defs/extension\" }\n },\n \"additionalProperties\": false\n },\n \"select\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"oneOf\": [\n { \"type\": \"string\", \"minLength\": 1 },\n { \"$ref\": \"#/$defs/selectExpression\" }\n ]\n }\n },\n \"selectExpression\": {\n \"type\": \"object\",\n \"required\": [\"name\", \"expr\"],\n \"properties\": {\n \"name\": { \"$ref\": \"#/$defs/fieldName\" },\n \"expr\": { \"$ref\": \"#/$defs/expression\" },\n \"label\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$\": { \"$ref\": \"#/$defs/extension\" }\n },\n \"additionalProperties\": false\n },\n \"orderBy\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"type\": \"object\",\n \"required\": [\"field\"],\n \"properties\": {\n \"field\": { \"type\": \"string\", \"minLength\": 1 },\n \"direction\": { \"enum\": [\"asc\", \"desc\"], \"default\": \"asc\" }\n },\n \"additionalProperties\": false\n }\n },\n \"groupBy\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"type\": \"object\",\n \"required\": [\"field\"],\n \"properties\": {\n \"field\": { \"type\": \"string\", \"minLength\": 1 },\n \"direction\": { \"enum\": [\"asc\", \"desc\"], \"default\": \"asc\" }\n },\n \"additionalProperties\": false\n }\n },\n \"summaries\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": { \"$ref\": \"#/$defs/summary\" }\n },\n \"summary\": {\n \"type\": \"object\",\n \"required\": [\"field\", \"function\"],\n \"properties\": {\n \"field\": { \"type\": \"string\", \"minLength\": 1 },\n \"function\": { \"$ref\": \"#/$defs/identifier\" },\n \"name\": { \"$ref\": \"#/$defs/fieldName\" },\n \"label\": { \"type\": \"string\" }\n },\n \"additionalProperties\": false\n },\n \"presentation\": {\n \"type\": \"object\",\n \"required\": [\"type\"],\n \"properties\": {\n \"type\": { \"$ref\": \"#/$defs/identifier\" },\n \"fallback\": { \"$ref\": \"#/$defs/identifier\" },\n \"mappings\": {\n \"type\": \"object\",\n \"propertyNames\": { \"$ref\": \"#/$defs/fieldName\" },\n \"additionalProperties\": { \"type\": \"string\", \"minLength\": 1 }\n },\n \"options\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"patternProperties\": {\n \"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$\": { \"$ref\": \"#/$defs/extension\" }\n },\n \"additionalProperties\": false\n }\n }\n}\n" - }, - { - "source": "contracts/mdbase.view/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: mdbase.view\nversion: 1.0.0\nname: Saved view\ndescription: Shared query scope and stable named views executable through the Query profile.\nrecord_schema:\n dialect: json-schema-2020-12\n ref: ../../schemas/mdbase.view/1.0.0.schema.json\n---\n\n# Saved view\n\nA record exposed through `mdbase.view` stores shared query scope and one or more\nstable named views. Each named view resolves to the query model in Chapter 11.\nOptional `presentation` metadata is advisory and does not alter headless query\nresults.\n\nImplementing this contract is how a collection declares which of its records\nare saved views. A tool that advertises `view_records` discovers and executes\nviews through this contract's type implementations, not through a reserved type\nname, path, or frontmatter value.\n\nThis artifact is passive. Implementing it grants no authority to read, execute,\nor modify any record.\n" - }, - { - "source": "types/view/2.md", - "document": "---\nkind: mdbase.type\nname: view\nversion: 2\ndescription: 'Saved views: shared query scope and stable named views'\nmatch:\n where:\n type: view\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: View\n description: 'Saved views: shared query scope and stable named views.'\n type: object\n required:\n - id\n - version\n - name\n - views\n properties:\n id:\n $ref: '#/$defs/identifier'\n version:\n type: integer\n minimum: 1\n name:\n type: string\n minLength: 1\n description:\n type: string\n query:\n $ref: '#/$defs/sharedQuery'\n properties:\n $ref: '#/$defs/propertyMetadataSet'\n summary_functions:\n $ref: '#/$defs/summaryFunctionSet'\n views:\n type: array\n minItems: 1\n items:\n $ref: '#/$defs/view'\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: true\n $defs:\n identifier:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9._:-]*$\n typeName:\n type: string\n pattern: ^[A-Za-z][A-Za-z0-9_-]{0,127}$\n fieldName:\n type: string\n pattern: ^[A-Za-z_][A-Za-z0-9_:-]*$\n expression:\n type: string\n minLength: 1\n extension:\n type: object\n additionalProperties: true\n typeList:\n type: array\n minItems: 1\n uniqueItems: true\n items:\n $ref: '#/$defs/typeName'\n sharedQuery:\n type: object\n properties:\n types:\n $ref: '#/$defs/typeList'\n where:\n $ref: '#/$defs/expression'\n context:\n $ref: '#/$defs/viewContext'\n projections:\n $ref: '#/$defs/projectionSet'\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n viewContext:\n type: object\n required:\n - this\n properties:\n this:\n $ref: '#/$defs/thisContext'\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n thisContext:\n type: object\n properties:\n on_missing:\n enum:\n - view\n - 'null'\n - error\n default: view\n types:\n $ref: '#/$defs/typeList'\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n projectionSet:\n type: object\n propertyNames:\n $ref: '#/$defs/fieldName'\n additionalProperties:\n $ref: '#/$defs/projection'\n projection:\n type: object\n required:\n - expr\n properties:\n expr:\n $ref: '#/$defs/expression'\n description:\n type: string\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n propertyMetadataSet:\n type: object\n propertyNames:\n type: string\n minLength: 1\n additionalProperties:\n $ref: '#/$defs/propertyMetadata'\n propertyMetadata:\n type: object\n properties:\n label:\n type: string\n description:\n type: string\n format:\n type: string\n hidden:\n type: boolean\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n summaryFunctionSet:\n type: object\n propertyNames:\n $ref: '#/$defs/fieldName'\n additionalProperties:\n $ref: '#/$defs/summaryFunction'\n summaryFunction:\n type: object\n required:\n - expr\n properties:\n expr:\n $ref: '#/$defs/expression'\n description:\n type: string\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n view:\n type: object\n required:\n - id\n - name\n properties:\n id:\n $ref: '#/$defs/identifier'\n name:\n type: string\n minLength: 1\n description:\n type: string\n types:\n $ref: '#/$defs/typeList'\n where:\n $ref: '#/$defs/expression'\n context:\n $ref: '#/$defs/viewContext'\n projections:\n $ref: '#/$defs/projectionSet'\n select:\n $ref: '#/$defs/select'\n order_by:\n $ref: '#/$defs/orderBy'\n group_by:\n $ref: '#/$defs/groupBy'\n summaries:\n $ref: '#/$defs/summaries'\n limit:\n type: integer\n minimum: 0\n offset:\n type: integer\n minimum: 0\n include_body:\n type: boolean\n default: false\n frontmatter_mode:\n enum:\n - effective\n - persisted\n - both\n default: effective\n presentation:\n $ref: '#/$defs/presentation'\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n select:\n type: array\n minItems: 1\n items:\n oneOf:\n - type: string\n minLength: 1\n - $ref: '#/$defs/selectExpression'\n selectExpression:\n type: object\n required:\n - name\n - expr\n properties:\n name:\n $ref: '#/$defs/fieldName'\n expr:\n $ref: '#/$defs/expression'\n label:\n type: string\n description:\n type: string\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\n orderBy:\n type: array\n minItems: 1\n items:\n type: object\n required:\n - field\n properties:\n field:\n type: string\n minLength: 1\n direction:\n enum:\n - asc\n - desc\n default: asc\n additionalProperties: false\n groupBy:\n type: array\n minItems: 1\n items:\n type: object\n required:\n - field\n properties:\n field:\n type: string\n minLength: 1\n direction:\n enum:\n - asc\n - desc\n default: asc\n additionalProperties: false\n summaries:\n type: array\n minItems: 1\n items:\n $ref: '#/$defs/summary'\n summary:\n type: object\n required:\n - field\n - function\n properties:\n field:\n type: string\n minLength: 1\n function:\n $ref: '#/$defs/identifier'\n name:\n $ref: '#/$defs/fieldName'\n label:\n type: string\n additionalProperties: false\n presentation:\n type: object\n required:\n - type\n properties:\n type:\n $ref: '#/$defs/identifier'\n fallback:\n $ref: '#/$defs/identifier'\n mappings:\n type: object\n propertyNames:\n $ref: '#/$defs/fieldName'\n additionalProperties:\n type: string\n minLength: 1\n options:\n type: object\n additionalProperties: true\n patternProperties:\n ^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$:\n $ref: '#/$defs/extension'\n additionalProperties: false\nimplements:\n- contract: mdbase.view\n version: 1.0.0\n fields:\n id: id\n version: version\n name: name\n description: description\n query: query\n properties: properties\n summary_functions: summary_functions\n views: views\ncollection:\n display:\n name_field: name\n---\n\n# View\n\nA view record stores shared query scope and one or more stable named views.\nTools that support saved views discover these records through the `mdbase.view`\ncontract and run each named view as an ordinary query.\n\nThis type belongs to your collection once installed. You can rename fields or\nchange how records are matched, as long as the `implements` mapping still\npoints each contract field at the right frontmatter field.\n" - } - ], - "provides": [ - { - "id": "mdbase.view", - "version": "1.0.0", - "digest": "sha256:0918acefce08cddd778fab768fe4f2e4615d263a0eec3e5330b6897c686d744e" - } - ] -} diff --git a/public/contracts/packs/obsidian.base/1.0.0.json b/public/contracts/packs/obsidian.base/1.0.0.json deleted file mode 100644 index d2648ab..0000000 --- a/public/contracts/packs/obsidian.base/1.0.0.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "manifest": { - "kind": "mdbase.type-pack", - "id": "obsidian.base", - "version": "1.0.0", - "name": "Obsidian Bases", - "description": "The obsidian.base contract and an editable type that stores Obsidian Bases as records.", - "resources": [ - { - "kind": "contract", - "mode": "managed", - "source": "contracts/obsidian.base/1.0.0.md", - "target": "_contracts/obsidian.base/1.0.0.md", - "digest": "sha256:fca77a9c845223784d4af7f5e13e2f149295621ad1b794ea9bb4d99f604467e8" - }, - { - "kind": "type", - "mode": "seed", - "source": "types/obsidian-base/1.md", - "target": "_types/obsidian_base.md", - "digest": "sha256:bfeb3880200bc1bef7fd50b777d3f927ce931d08b4fb3c30d4cddb55feaf3f92" - } - ] - }, - "resources": [ - { - "source": "contracts/obsidian.base/1.0.0.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: obsidian.base\nversion: 1.0.0\nname: Obsidian Base\ndescription: An Obsidian Bases saved-view source stored as a YAML document record.\nrecord_schema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n type: object\n required: [views]\n properties:\n filters: {}\n formulas: { type: object }\n properties: { type: object }\n views:\n type: array\n minItems: 1\n items: { type: object, required: [type], properties: { type: { type: string }, name: { type: string } } }\n---\n\n# Obsidian Base\n\nA record exposed through `obsidian.base` is an Obsidian Bases source: global\nfilters, formulas, property metadata, and one or more views. The schema is\ndeliberately permissive. Obsidian owns the format and adds keys over time;\nunknown keys are preserved and ignored.\n\nTools that advertise `obsidian_bases_views` discover and execute these records\nthrough this contract and evaluate them with the Obsidian Bases expression\ndialect described in the [Obsidian Bases adapter](https://mdbase.dev/spec/adapters/obsidian-bases).\n\nThis artifact is passive. Implementing it grants no authority to read, execute,\nor modify any record.\n" - }, - { - "source": "types/obsidian-base/1.md", - "document": "---\nkind: mdbase.type\nname: obsidian_base\nversion: 1\ndescription: Obsidian Bases saved views stored as records\nmatch:\n path_glob: '**/*.base'\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n title: Obsidian Base\n description: An Obsidian Bases file. Obsidian owns the format; unknown keys are kept.\n type: object\n required:\n - views\n properties:\n filters: {}\n formulas:\n type: object\n properties:\n type: object\n views:\n type: array\n minItems: 1\n items:\n type: object\n required:\n - type\n properties:\n type:\n type: string\n name:\n type: string\nimplements:\n - contract: obsidian.base\n version: 1.0.0\n fields:\n filters: filters\n formulas: formulas\n properties: properties\n views: views\n---\n\n# Obsidian Base\n\nMakes `.base` files discoverable as saved views through the `obsidian.base`\ncontract. It takes effect when the collection lists `base` in\n`settings.record_extensions`; narrow the `path_glob` to the folders that hold\nyour Bases. Edit Bases with whole-document replacement so Obsidian's comments\nand layout survive.\n" - } - ], - "provides": [ - { - "id": "obsidian.base", - "version": "1.0.0", - "digest": "sha256:37e8a0bfb32bb4795c1b3c5dec613c32429aaa765dc33e4adc0c627a48f5c1ff" - } - ] -} diff --git a/public/contracts/packs/tasknotes.task/0.3.0-rc.12.json b/public/contracts/packs/tasknotes.task/0.3.0-rc.12.json deleted file mode 100644 index 654b54f..0000000 --- a/public/contracts/packs/tasknotes.task/0.3.0-rc.12.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "manifest": { - "kind": "mdbase.type-pack", - "id": "tasknotes.task", - "version": "0.3.0-rc.12", - "name": "TaskNotes task type pack", - "description": "The portable TaskNotes task contract and an editable TaskNotes task type.", - "resources": [ - { - "kind": "contract", - "mode": "managed", - "source": "contracts/tasknotes.task/0.3.0-rc.3.md", - "target": "_contracts/tasknotes.task.md", - "digest": "sha256:4761ee78615882170cae6e52590f98917f549bd89d852a0c40568583394d7264" - }, - { - "kind": "type", - "mode": "seed", - "source": "types/tasknotes-task/1.md", - "target": "_types/task.md", - "digest": "sha256:b7f8af7b18d77859dab1f1532c1b55c08c7c39879f55e4ef2a94cb7d2d2284eb" - }, - { - "kind": "schema", - "mode": "managed", - "source": "schemas/tasknotes.task/0.3.0-rc.3.schema.json", - "target": "_schemas/tasknotes/tasknotes-task.schema.json", - "digest": "sha256:3d01df62fc230dfa1cd5c290d685e285594370e17fa176bc06e48c49200d0dc8" - }, - { - "kind": "schema", - "mode": "managed", - "source": "schemas/tasknotes.task.binding/0.3.0-rc.3.schema.json", - "target": "_schemas/tasknotes/tasknotes-task-binding.schema.json", - "digest": "sha256:5b38e8a1c426b7f7fa92d8353fe35dd98e632305cbb15ffccde387473166b267" - } - ] - }, - "resources": [ - { - "source": "contracts/tasknotes.task/0.3.0-rc.3.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: tasknotes.task\nversion: 0.3.0-rc.3\nname: TaskNotes task\ndescription: Portable task data and behavior defined by tasknotes-spec 0.3.0-rc.3.\nrecord_schema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n $id: https://tasknotes.dev/schemas/tasknotes-task.schema.json\n title: TaskNotes portable task view\n description: The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.3 record contract.\n type: object\n required:\n - status\n - dateCreated\n additionalProperties: false\n properties:\n id:\n type: string\n minLength: 1\n title:\n type: string\n minLength: 1\n status:\n type: string\n minLength: 1\n priority:\n type: string\n minLength: 1\n due:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n scheduled:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n contexts:\n type: array\n items:\n type: string\n projects:\n type: array\n items:\n type: string\n attachments:\n type: array\n uniqueItems: true\n items:\n type: string\n minLength: 1\n timeEstimate:\n type: integer\n minimum: 0\n completedDate:\n type: string\n format: date\n dateCreated:\n type: string\n format: date-time\n dateModified:\n type: string\n format: date-time\n recurrence:\n type: string\n recurrenceAnchor:\n enum:\n - scheduled\n - completion\n recurrenceParent:\n type: string\n occurrenceDate:\n type: string\n format: date\n occurrenceMaterialization:\n enum:\n - manual\n - on_completion\n - rolling\n occurrenceNextTrigger:\n enum:\n - completion\n - completion_or_skip\n occurrenceTemplate:\n type: string\n occurrencePastHorizon:\n type: string\n occurrenceFutureHorizon:\n type: string\n tags:\n type: array\n items:\n type: string\n timeEntries:\n type: array\n items:\n type: object\n reminders:\n type: array\n items:\n type: object\n blockedBy:\n type: array\n items:\n type: object\n completeInstances:\n type: array\n items:\n type: string\n format: date\n skippedInstances:\n type: array\n items:\n type: string\n format: date\n icsEventId:\n type: array\n items:\n type: string\n googleCalendarEventId:\n type: string\n googleCalendarExceptionEventId:\n type: string\n googleCalendarExceptionOriginalScheduled:\n type: string\n format: date\n googleCalendarMovedOriginalDates:\n type: array\n items:\n type: string\n format: date\n sortOrder:\n type: string\nbinding_schema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n $id: https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json\n title: TaskNotes task data-contract binding\n description: Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3.\n type: object\n required:\n - profiles\n - capabilities\n - title\n - status\n - priority\n - recurrence\n - occurrences\n - links\n - archive\n - time_tracking\n - templating\n properties:\n profiles:\n type: array\n minItems: 1\n uniqueItems: true\n items:\n enum:\n - core-lite\n - recurrence\n - templating\n - materialized-occurrences\n - extended\n capabilities:\n type: array\n uniqueItems: true\n items:\n enum:\n - dependencies\n - reminders\n - attachments\n - links\n - time-tracking\n - materialized-occurrences\n - rename\n - archive\n - batch\n - concurrency\n - dry-run\n - migration\n - templating\n title:\n $ref: \"#/$defs/titlePolicy\"\n status:\n $ref: \"#/$defs/statusPolicy\"\n priority:\n $ref: \"#/$defs/priorityPolicy\"\n recurrence:\n $ref: \"#/$defs/recurrencePolicy\"\n occurrences:\n $ref: \"#/$defs/occurrencePolicy\"\n links:\n $ref: \"#/$defs/linkPolicy\"\n archive:\n $ref: \"#/$defs/archivePolicy\"\n time_tracking:\n $ref: \"#/$defs/timeTrackingPolicy\"\n templating:\n $ref: \"#/$defs/templatingPolicy\"\n nlp:\n $ref: \"#/$defs/nlpPolicy\"\n additionalProperties: false\n $defs:\n nonEmptyString:\n type: string\n minLength: 1\n stringSet:\n type: array\n uniqueItems: true\n items:\n $ref: \"#/$defs/nonEmptyString\"\n titlePolicy:\n type: object\n required:\n - storage\n properties:\n storage:\n enum:\n - filename\n - frontmatter\n filename_format:\n enum:\n - title\n - zettel\n - timestamp\n - uuid\n - custom\n custom_filename_template:\n $ref: \"#/$defs/nonEmptyString\"\n allOf:\n - if:\n properties:\n filename_format:\n const: custom\n required:\n - filename_format\n then:\n properties:\n custom_filename_template:\n $ref: \"#/$defs/nonEmptyString\"\n required:\n - custom_filename_template\n additionalProperties: true\n statusDefinition:\n type: object\n required:\n - value\n - label\n - color\n - is_completed\n - is_skipped\n - exclude_from_cycle\n - order\n - auto_archive\n - auto_archive_delay_minutes\n properties:\n value:\n $ref: \"#/$defs/nonEmptyString\"\n label:\n type: string\n color:\n type: string\n icon:\n $ref: \"#/$defs/nonEmptyString\"\n is_completed:\n type: boolean\n is_skipped:\n type: boolean\n exclude_from_cycle:\n type: boolean\n next_status:\n $ref: \"#/$defs/nonEmptyString\"\n order:\n type: number\n auto_archive:\n type: boolean\n auto_archive_delay_minutes:\n type: number\n minimum: 0\n additionalProperties: true\n statusPolicy:\n type: object\n required:\n - values\n - default\n - completed_values\n - definitions\n properties:\n values:\n $ref: \"#/$defs/stringSet\"\n default:\n $ref: \"#/$defs/nonEmptyString\"\n completed_values:\n $ref: \"#/$defs/stringSet\"\n skipped_values:\n $ref: \"#/$defs/stringSet\"\n default_skipped:\n $ref: \"#/$defs/nonEmptyString\"\n definitions:\n type: array\n items:\n $ref: \"#/$defs/statusDefinition\"\n additionalProperties: false\n priorityDefinition:\n type: object\n required:\n - value\n - label\n - color\n - weight\n properties:\n value:\n $ref: \"#/$defs/nonEmptyString\"\n label:\n type: string\n color:\n type: string\n icon:\n $ref: \"#/$defs/nonEmptyString\"\n weight:\n type: number\n additionalProperties: true\n priorityPolicy:\n type: object\n required:\n - values\n - default\n - definitions\n properties:\n values:\n $ref: \"#/$defs/stringSet\"\n default:\n $ref: \"#/$defs/nonEmptyString\"\n definitions:\n type: array\n items:\n $ref: \"#/$defs/priorityDefinition\"\n additionalProperties: false\n recurrencePolicy:\n type: object\n required:\n - syntax\n - maintain_due_date_offset\n - reset_body_checkboxes\n properties:\n syntax:\n const: tasknotes\n maintain_due_date_offset:\n type: boolean\n reset_body_checkboxes:\n type: boolean\n additionalProperties: false\n occurrencePolicy:\n type: object\n required:\n - identity_roles\n - default_materialization\n - default_next_trigger\n properties:\n identity_roles:\n const:\n - recurrenceParent\n - occurrenceDate\n default_materialization:\n enum:\n - manual\n - on_completion\n - rolling\n default_next_trigger:\n enum:\n - completion\n - completion_or_skip\n past_horizon:\n $ref: \"#/$defs/nonEmptyString\"\n future_horizon:\n $ref: \"#/$defs/nonEmptyString\"\n additionalProperties: false\n linkPolicy:\n type: object\n required:\n - accepted_formats\n - write_format\n properties:\n accepted_formats:\n type: array\n minItems: 1\n uniqueItems: true\n items:\n enum:\n - wikilink\n - markdown\n write_format:\n enum:\n - wikilink\n - markdown\n additionalProperties: false\n archivePolicy:\n type: object\n required:\n - archived_tag\n - move_on_archive\n properties:\n archived_tag:\n $ref: \"#/$defs/nonEmptyString\"\n move_on_archive:\n type: boolean\n folder:\n $ref: \"#/$defs/nonEmptyString\"\n additionalProperties: false\n timeTrackingPolicy:\n type: object\n required:\n - auto_stop_on_complete\n properties:\n auto_stop_on_complete:\n type: boolean\n additionalProperties: false\n templatingPolicy:\n type: object\n required:\n - enabled\n - occurrence_enabled\n properties:\n enabled:\n type: boolean\n template_path:\n $ref: \"#/$defs/nonEmptyString\"\n occurrence_enabled:\n type: boolean\n occurrence_template_path:\n $ref: \"#/$defs/nonEmptyString\"\n failure_mode:\n enum:\n - error\n - warning_fallback\n unknown_variable_policy:\n enum:\n - preserve\n - empty\n additionalProperties: false\n nlpTrigger:\n type: object\n required:\n - property_id\n - trigger\n - enabled\n properties:\n property_id:\n $ref: \"#/$defs/nonEmptyString\"\n trigger:\n $ref: \"#/$defs/nonEmptyString\"\n enabled:\n type: boolean\n additionalProperties: false\n nlpPolicy:\n type: object\n required:\n - triggers\n properties:\n triggers:\n type: array\n items:\n $ref: \"#/$defs/nlpTrigger\"\n additionalProperties: false\n---\n\n# TaskNotes task contract\n\nTypes implement this contract through `implements`; applications consume\nthe normalized contract view rather than assuming frontmatter names.\n" - }, - { - "source": "types/tasknotes-task/1.md", - "document": "---\nkind: mdbase.type\nname: task\nversion: 1\ndescription: A task managed by TaskNotes.\nmatch:\n where:\n tags:\n contains: task\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n type: object\n additionalProperties: true\n properties:\n id:\n type: string\n minLength: 1\n title:\n type: string\n minLength: 1\n status:\n enum: &a2\n - none\n - open\n - in-progress\n - done\n - cancelled\n default: open\n priority:\n enum: &a4\n - none\n - low\n - normal\n - high\n default: normal\n due: &a1\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n scheduled: *a1\n contexts:\n type: array\n items:\n type: string\n projects:\n type: array\n items:\n type: string\n attachments:\n type: array\n items:\n type: string\n minLength: 1\n uniqueItems: true\n timeEstimate:\n type: integer\n minimum: 0\n completedDate:\n type: string\n format: date\n dateCreated:\n type: string\n format: date-time\n dateModified:\n type: string\n format: date-time\n recurrence:\n type: string\n recurrence_anchor:\n enum:\n - scheduled\n - completion\n default: scheduled\n occurrence_materialization:\n enum:\n - manual\n - on_completion\n - rolling\n default: manual\n occurrence_next_trigger:\n enum:\n - completion\n - completion_or_skip\n default: completion\n occurrence_template:\n type: string\n occurrence_past_horizon:\n type: string\n occurrence_future_horizon:\n type: string\n recurrence_parent:\n type: string\n occurrence_date:\n type: string\n format: date\n tags:\n type: array\n items:\n type: string\n timeEntries:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n startTime:\n type: string\n format: date-time\n endTime:\n type: string\n format: date-time\n description:\n type: string\n duration:\n type: integer\n reminders:\n type: array\n items:\n oneOf:\n - type: object\n required:\n - id\n - type\n - absoluteTime\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: absolute\n description:\n type: string\n absoluteTime:\n type: string\n format: date-time\n - type: object\n required:\n - id\n - type\n - relatedTo\n - offset\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: relative\n description:\n type: string\n relatedTo:\n enum:\n - due\n - scheduled\n offset:\n type: string\n blockedBy:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n uid:\n type: string\n reltype:\n type: string\n gap:\n type: string\n required:\n - uid\n complete_instances:\n type: array\n items:\n type: string\n format: date\n skipped_instances:\n type: array\n items:\n type: string\n format: date\n icsEventId:\n type: array\n items:\n type: string\n googleCalendarEventId:\n type: string\n googleCalendarExceptionEventId:\n type: string\n googleCalendarExceptionOriginalScheduled:\n type: string\n format: date\n googleCalendarMovedOriginalDates:\n type: array\n items:\n type: string\n format: date\n tasknotes_manual_order:\n type: string\n allOf:\n - if:\n required:\n - status\n properties:\n status:\n enum: &a3\n - done\n not:\n required:\n - recurrence\n then:\n required:\n - completedDate\n required:\n - title\n - status\n - dateCreated\ncollection:\n read_defaults:\n status: open\n priority: normal\n recurrence_anchor: scheduled\n occurrence_materialization: manual\n occurrence_next_trigger: completion\n links:\n projects[]:\n target_type: any\n validate_exists: false\n attachments[]:\n validate_exists: false\n occurrence_template:\n target_type: any\n validate_exists: false\n recurrence_parent:\n target_type: task\n validate_exists: false\n blockedBy[].uid:\n target_type: task\n validate_exists: false\n path:\n runtime: tasknotes\n template: \"{{zettel}}\"\n folder: tasks\n generated_by: tasknotes.filename.create\n display:\n name_field: title\n unique:\n - field: id\n scope: type\nlifecycle:\n on_create:\n set:\n id:\n uuid: true\n dateCreated:\n now: true\n dateModified:\n now: true\n on_update:\n set:\n dateModified:\n now: true\nimplements:\n - contract: tasknotes.task\n version: 0.3.0-rc.3\n fields:\n id: id\n title: title\n status: status\n priority: priority\n due: due\n scheduled: scheduled\n contexts: contexts\n projects: projects\n attachments: attachments\n timeEstimate: timeEstimate\n completedDate: completedDate\n dateCreated: dateCreated\n dateModified: dateModified\n recurrence: recurrence\n recurrenceAnchor: recurrence_anchor\n occurrenceMaterialization: occurrence_materialization\n occurrenceNextTrigger: occurrence_next_trigger\n occurrenceTemplate: occurrence_template\n occurrencePastHorizon: occurrence_past_horizon\n occurrenceFutureHorizon: occurrence_future_horizon\n recurrenceParent: recurrence_parent\n occurrenceDate: occurrence_date\n tags: tags\n timeEntries: timeEntries\n reminders: reminders\n blockedBy: blockedBy\n completeInstances: complete_instances\n skippedInstances: skipped_instances\n icsEventId: icsEventId\n googleCalendarEventId: googleCalendarEventId\n googleCalendarExceptionEventId: googleCalendarExceptionEventId\n googleCalendarExceptionOriginalScheduled: googleCalendarExceptionOriginalScheduled\n googleCalendarMovedOriginalDates: googleCalendarMovedOriginalDates\n sortOrder: tasknotes_manual_order\n binding:\n profiles:\n - core-lite\n - recurrence\n - materialized-occurrences\n capabilities:\n - dependencies\n - reminders\n - attachments\n - links\n - time-tracking\n - materialized-occurrences\n - archive\n - templating\n title:\n storage: frontmatter\n filename_format: zettel\n status:\n values: *a2\n default: open\n completed_values: *a3\n skipped_values:\n - cancelled\n default_skipped: cancelled\n definitions:\n - value: none\n label: None\n color: \"#94a3b8\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 0\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: open\n label: Open\n color: \"#64748b\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 1\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: in-progress\n label: In progress\n color: \"#3b82f6\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 2\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: done\n label: Done\n color: \"#22c55e\"\n is_completed: true\n is_skipped: false\n exclude_from_cycle: false\n order: 3\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: cancelled\n label: Cancelled\n color: \"#94a3b8\"\n is_completed: false\n is_skipped: true\n exclude_from_cycle: true\n order: 4\n auto_archive: false\n auto_archive_delay_minutes: 5\n priority:\n values: *a4\n default: normal\n definitions:\n - value: none\n label: None\n color: \"#94a3b8\"\n weight: 0\n - value: low\n label: Low\n color: \"#3b82f6\"\n weight: 1\n - value: normal\n label: Normal\n color: \"#f59e0b\"\n weight: 2\n - value: high\n label: High\n color: \"#ef4444\"\n weight: 3\n recurrence:\n syntax: tasknotes\n maintain_due_date_offset: true\n reset_body_checkboxes: false\n occurrences:\n identity_roles:\n - recurrenceParent\n - occurrenceDate\n default_materialization: manual\n default_next_trigger: completion\n past_horizon: P0D\n future_horizon: P14D\n links:\n accepted_formats:\n - wikilink\n - markdown\n write_format: wikilink\n archive:\n archived_tag: archived\n move_on_archive: false\n time_tracking:\n auto_stop_on_complete: false\n templating:\n enabled: false\n occurrence_enabled: false\nx-tasknotes-generator:\n managed_fields:\n - attachments\n - blockedBy\n - complete_instances\n - completedDate\n - contexts\n - dateCreated\n - dateModified\n - due\n - googleCalendarEventId\n - googleCalendarExceptionEventId\n - googleCalendarExceptionOriginalScheduled\n - googleCalendarMovedOriginalDates\n - icsEventId\n - id\n - occurrence_date\n - occurrence_future_horizon\n - occurrence_materialization\n - occurrence_next_trigger\n - occurrence_past_horizon\n - occurrence_template\n - priority\n - projects\n - recurrence\n - recurrence_anchor\n - recurrence_parent\n - reminders\n - scheduled\n - skipped_instances\n - status\n - tags\n - tasknotes_manual_order\n - timeEntries\n - timeEstimate\n - title\n---\n# Task\n\nTask records live under `tasks/`.\n" - }, - { - "source": "schemas/tasknotes.task/0.3.0-rc.3.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://tasknotes.dev/schemas/tasknotes-task.schema.json\",\n \"title\": \"TaskNotes portable task view\",\n \"description\": \"The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.3 record contract.\",\n \"type\": \"object\",\n \"required\": [\n \"status\",\n \"dateCreated\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"title\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"status\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"priority\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"due\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n ]\n },\n \"scheduled\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n ]\n },\n \"contexts\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"projects\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"attachments\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"timeEstimate\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"completedDate\": {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n \"dateCreated\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"dateModified\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"recurrence\": {\n \"type\": \"string\"\n },\n \"recurrenceAnchor\": {\n \"enum\": [\n \"scheduled\",\n \"completion\"\n ]\n },\n \"recurrenceParent\": {\n \"type\": \"string\"\n },\n \"occurrenceDate\": {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n \"occurrenceMaterialization\": {\n \"enum\": [\n \"manual\",\n \"on_completion\",\n \"rolling\"\n ]\n },\n \"occurrenceNextTrigger\": {\n \"enum\": [\n \"completion\",\n \"completion_or_skip\"\n ]\n },\n \"occurrenceTemplate\": {\n \"type\": \"string\"\n },\n \"occurrencePastHorizon\": {\n \"type\": \"string\"\n },\n \"occurrenceFutureHorizon\": {\n \"type\": \"string\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"timeEntries\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"reminders\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"blockedBy\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"completeInstances\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"date\"\n }\n },\n \"skippedInstances\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"date\"\n }\n },\n \"icsEventId\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"googleCalendarEventId\": {\n \"type\": \"string\"\n },\n \"googleCalendarExceptionEventId\": {\n \"type\": \"string\"\n },\n \"googleCalendarExceptionOriginalScheduled\": {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n \"googleCalendarMovedOriginalDates\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"date\"\n }\n },\n \"sortOrder\": {\n \"type\": \"string\"\n }\n }\n}\n" - }, - { - "source": "schemas/tasknotes.task.binding/0.3.0-rc.3.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json\",\n \"title\": \"TaskNotes task data-contract binding\",\n \"description\": \"Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3.\",\n \"type\": \"object\",\n \"required\": [\n \"profiles\",\n \"capabilities\",\n \"title\",\n \"status\",\n \"priority\",\n \"recurrence\",\n \"occurrences\",\n \"links\",\n \"archive\",\n \"time_tracking\",\n \"templating\"\n ],\n \"properties\": {\n \"profiles\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"core-lite\",\n \"recurrence\",\n \"templating\",\n \"materialized-occurrences\",\n \"extended\"\n ]\n }\n },\n \"capabilities\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"dependencies\",\n \"reminders\",\n \"attachments\",\n \"links\",\n \"time-tracking\",\n \"materialized-occurrences\",\n \"rename\",\n \"archive\",\n \"batch\",\n \"concurrency\",\n \"dry-run\",\n \"migration\",\n \"templating\"\n ]\n }\n },\n \"title\": {\n \"$ref\": \"#/$defs/titlePolicy\"\n },\n \"status\": {\n \"$ref\": \"#/$defs/statusPolicy\"\n },\n \"priority\": {\n \"$ref\": \"#/$defs/priorityPolicy\"\n },\n \"recurrence\": {\n \"$ref\": \"#/$defs/recurrencePolicy\"\n },\n \"occurrences\": {\n \"$ref\": \"#/$defs/occurrencePolicy\"\n },\n \"links\": {\n \"$ref\": \"#/$defs/linkPolicy\"\n },\n \"archive\": {\n \"$ref\": \"#/$defs/archivePolicy\"\n },\n \"time_tracking\": {\n \"$ref\": \"#/$defs/timeTrackingPolicy\"\n },\n \"templating\": {\n \"$ref\": \"#/$defs/templatingPolicy\"\n },\n \"nlp\": {\n \"$ref\": \"#/$defs/nlpPolicy\"\n }\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"nonEmptyString\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"stringSet\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"titlePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"storage\"\n ],\n \"properties\": {\n \"storage\": {\n \"enum\": [\n \"filename\",\n \"frontmatter\"\n ]\n },\n \"filename_format\": {\n \"enum\": [\n \"title\",\n \"zettel\",\n \"timestamp\",\n \"uuid\",\n \"custom\"\n ]\n },\n \"custom_filename_template\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": {\n \"filename_format\": {\n \"const\": \"custom\"\n }\n },\n \"required\": [\n \"filename_format\"\n ]\n },\n \"then\": {\n \"properties\": {\n \"custom_filename_template\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"required\": [\n \"custom_filename_template\"\n ]\n }\n }\n ],\n \"additionalProperties\": true\n },\n \"statusDefinition\": {\n \"type\": \"object\",\n \"required\": [\n \"value\",\n \"label\",\n \"color\",\n \"is_completed\",\n \"is_skipped\",\n \"exclude_from_cycle\",\n \"order\",\n \"auto_archive\",\n \"auto_archive_delay_minutes\"\n ],\n \"properties\": {\n \"value\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"is_completed\": {\n \"type\": \"boolean\"\n },\n \"is_skipped\": {\n \"type\": \"boolean\"\n },\n \"exclude_from_cycle\": {\n \"type\": \"boolean\"\n },\n \"next_status\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"order\": {\n \"type\": \"number\"\n },\n \"auto_archive\": {\n \"type\": \"boolean\"\n },\n \"auto_archive_delay_minutes\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n },\n \"additionalProperties\": true\n },\n \"statusPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"values\",\n \"default\",\n \"completed_values\",\n \"definitions\"\n ],\n \"properties\": {\n \"values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"default\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"completed_values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"skipped_values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"default_skipped\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"definitions\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/statusDefinition\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"priorityDefinition\": {\n \"type\": \"object\",\n \"required\": [\n \"value\",\n \"label\",\n \"color\",\n \"weight\"\n ],\n \"properties\": {\n \"value\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"weight\": {\n \"type\": \"number\"\n }\n },\n \"additionalProperties\": true\n },\n \"priorityPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"values\",\n \"default\",\n \"definitions\"\n ],\n \"properties\": {\n \"values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"default\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"definitions\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/priorityDefinition\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"recurrencePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"syntax\",\n \"maintain_due_date_offset\",\n \"reset_body_checkboxes\"\n ],\n \"properties\": {\n \"syntax\": {\n \"const\": \"tasknotes\"\n },\n \"maintain_due_date_offset\": {\n \"type\": \"boolean\"\n },\n \"reset_body_checkboxes\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"occurrencePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"identity_roles\",\n \"default_materialization\",\n \"default_next_trigger\"\n ],\n \"properties\": {\n \"identity_roles\": {\n \"const\": [\n \"recurrenceParent\",\n \"occurrenceDate\"\n ]\n },\n \"default_materialization\": {\n \"enum\": [\n \"manual\",\n \"on_completion\",\n \"rolling\"\n ]\n },\n \"default_next_trigger\": {\n \"enum\": [\n \"completion\",\n \"completion_or_skip\"\n ]\n },\n \"past_horizon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"future_horizon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"additionalProperties\": false\n },\n \"linkPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"accepted_formats\",\n \"write_format\"\n ],\n \"properties\": {\n \"accepted_formats\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"wikilink\",\n \"markdown\"\n ]\n }\n },\n \"write_format\": {\n \"enum\": [\n \"wikilink\",\n \"markdown\"\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"archivePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"archived_tag\",\n \"move_on_archive\"\n ],\n \"properties\": {\n \"archived_tag\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"move_on_archive\": {\n \"type\": \"boolean\"\n },\n \"folder\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"additionalProperties\": false\n },\n \"timeTrackingPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"auto_stop_on_complete\"\n ],\n \"properties\": {\n \"auto_stop_on_complete\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"templatingPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"enabled\",\n \"occurrence_enabled\"\n ],\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"template_path\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"occurrence_enabled\": {\n \"type\": \"boolean\"\n },\n \"occurrence_template_path\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"failure_mode\": {\n \"enum\": [\n \"error\",\n \"warning_fallback\"\n ]\n },\n \"unknown_variable_policy\": {\n \"enum\": [\n \"preserve\",\n \"empty\"\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"nlpTrigger\": {\n \"type\": \"object\",\n \"required\": [\n \"property_id\",\n \"trigger\",\n \"enabled\"\n ],\n \"properties\": {\n \"property_id\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"trigger\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"nlpPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"triggers\"\n ],\n \"properties\": {\n \"triggers\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/nlpTrigger\"\n }\n }\n },\n \"additionalProperties\": false\n }\n }\n}\n" - } - ], - "provides": [ - { - "id": "tasknotes.task", - "version": "0.3.0-rc.3", - "digest": "sha256:48b9017ac0896ffbdee4d14fc0325ef86916bf8789da4ac8a4cd246435887155" - } - ] -} diff --git a/public/contracts/packs/tasknotes.task/0.3.0-rc.13.json b/public/contracts/packs/tasknotes.task/0.3.0-rc.13.json deleted file mode 100644 index 9bdbdb7..0000000 --- a/public/contracts/packs/tasknotes.task/0.3.0-rc.13.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "manifest": { - "kind": "mdbase.type-pack", - "id": "tasknotes.task", - "version": "0.3.0-rc.13", - "name": "TaskNotes task type pack", - "description": "Portable TaskNotes tasks with person-ID assignments.", - "resources": [ - { - "kind": "contract", - "mode": "managed", - "source": "contracts/tasknotes.task/0.3.0-rc.4.md", - "target": "_contracts/tasknotes.task.md", - "digest": "sha256:91165b7664f936bba9289aca984e2638901db7fedf68642ab755e8d0b424e734" - }, - { - "kind": "type", - "mode": "seed", - "source": "types/tasknotes-task/2.md", - "target": "_types/task.md", - "digest": "sha256:ade71117bd31e571f403511c48d432bab7a05dfd25e730ca2931f3afda7f7cd5" - }, - { - "kind": "schema", - "mode": "managed", - "source": "schemas/tasknotes.task/0.3.0-rc.4.schema.json", - "target": "_schemas/tasknotes/tasknotes-task.schema.json", - "digest": "sha256:2ea0d6b968ec2329e87ed60c2685d490e0f66f2bc7b3a23547d8fc55a7936fbe" - }, - { - "kind": "schema", - "mode": "managed", - "source": "schemas/tasknotes.task.binding/0.3.0-rc.4.schema.json", - "target": "_schemas/tasknotes/tasknotes-task-binding.schema.json", - "digest": "sha256:5b38e8a1c426b7f7fa92d8353fe35dd98e632305cbb15ffccde387473166b267" - } - ] - }, - "resources": [ - { - "source": "contracts/tasknotes.task/0.3.0-rc.4.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: tasknotes.task\nversion: 0.3.0-rc.4\nname: TaskNotes task\ndescription: Portable task data and behavior defined by tasknotes-spec 0.3.0-rc.4.\nrecord_schema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n $id: https://tasknotes.dev/schemas/tasknotes-task.schema.json\n title: TaskNotes portable task view\n description: The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.4 record contract.\n type: object\n required:\n - status\n - dateCreated\n additionalProperties: false\n properties:\n id:\n type: string\n minLength: 1\n title:\n type: string\n minLength: 1\n status:\n type: string\n minLength: 1\n priority:\n type: string\n minLength: 1\n due:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n scheduled:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n contexts:\n type: array\n items:\n type: string\n projects:\n type: array\n items:\n type: string\n assignees:\n type: array\n uniqueItems: true\n items:\n type: string\n minLength: 1\n pattern: \\S\n description: Stable mdbase.person IDs. These references never grant collection access.\n attachments:\n type: array\n uniqueItems: true\n items:\n type: string\n minLength: 1\n timeEstimate:\n type: integer\n minimum: 0\n completedDate:\n type: string\n format: date\n dateCreated:\n type: string\n format: date-time\n dateModified:\n type: string\n format: date-time\n recurrence:\n type: string\n recurrenceAnchor:\n enum:\n - scheduled\n - completion\n recurrenceParent:\n type: string\n occurrenceDate:\n type: string\n format: date\n occurrenceMaterialization:\n enum:\n - manual\n - on_completion\n - rolling\n occurrenceNextTrigger:\n enum:\n - completion\n - completion_or_skip\n occurrenceTemplate:\n type: string\n occurrencePastHorizon:\n type: string\n occurrenceFutureHorizon:\n type: string\n tags:\n type: array\n items:\n type: string\n timeEntries:\n type: array\n items:\n type: object\n reminders:\n type: array\n items:\n type: object\n blockedBy:\n type: array\n items:\n type: object\n completeInstances:\n type: array\n items:\n type: string\n format: date\n skippedInstances:\n type: array\n items:\n type: string\n format: date\n icsEventId:\n type: array\n items:\n type: string\n googleCalendarEventId:\n type: string\n googleCalendarExceptionEventId:\n type: string\n googleCalendarExceptionOriginalScheduled:\n type: string\n format: date\n googleCalendarMovedOriginalDates:\n type: array\n items:\n type: string\n format: date\n sortOrder:\n type: string\nbinding_schema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n $id: https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json\n title: TaskNotes task data-contract binding\n description: Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3.\n type: object\n required:\n - profiles\n - capabilities\n - title\n - status\n - priority\n - recurrence\n - occurrences\n - links\n - archive\n - time_tracking\n - templating\n properties:\n profiles:\n type: array\n minItems: 1\n uniqueItems: true\n items:\n enum:\n - core-lite\n - recurrence\n - templating\n - materialized-occurrences\n - extended\n capabilities:\n type: array\n uniqueItems: true\n items:\n enum:\n - dependencies\n - reminders\n - attachments\n - links\n - time-tracking\n - materialized-occurrences\n - rename\n - archive\n - batch\n - concurrency\n - dry-run\n - migration\n - templating\n title:\n $ref: \"#/$defs/titlePolicy\"\n status:\n $ref: \"#/$defs/statusPolicy\"\n priority:\n $ref: \"#/$defs/priorityPolicy\"\n recurrence:\n $ref: \"#/$defs/recurrencePolicy\"\n occurrences:\n $ref: \"#/$defs/occurrencePolicy\"\n links:\n $ref: \"#/$defs/linkPolicy\"\n archive:\n $ref: \"#/$defs/archivePolicy\"\n time_tracking:\n $ref: \"#/$defs/timeTrackingPolicy\"\n templating:\n $ref: \"#/$defs/templatingPolicy\"\n nlp:\n $ref: \"#/$defs/nlpPolicy\"\n additionalProperties: false\n $defs:\n nonEmptyString:\n type: string\n minLength: 1\n stringSet:\n type: array\n uniqueItems: true\n items:\n $ref: \"#/$defs/nonEmptyString\"\n titlePolicy:\n type: object\n required:\n - storage\n properties:\n storage:\n enum:\n - filename\n - frontmatter\n filename_format:\n enum:\n - title\n - zettel\n - timestamp\n - uuid\n - custom\n custom_filename_template:\n $ref: \"#/$defs/nonEmptyString\"\n allOf:\n - if:\n properties:\n filename_format:\n const: custom\n required:\n - filename_format\n then:\n properties:\n custom_filename_template:\n $ref: \"#/$defs/nonEmptyString\"\n required:\n - custom_filename_template\n additionalProperties: true\n statusDefinition:\n type: object\n required:\n - value\n - label\n - color\n - is_completed\n - is_skipped\n - exclude_from_cycle\n - order\n - auto_archive\n - auto_archive_delay_minutes\n properties:\n value:\n $ref: \"#/$defs/nonEmptyString\"\n label:\n type: string\n color:\n type: string\n icon:\n $ref: \"#/$defs/nonEmptyString\"\n is_completed:\n type: boolean\n is_skipped:\n type: boolean\n exclude_from_cycle:\n type: boolean\n next_status:\n $ref: \"#/$defs/nonEmptyString\"\n order:\n type: number\n auto_archive:\n type: boolean\n auto_archive_delay_minutes:\n type: number\n minimum: 0\n additionalProperties: true\n statusPolicy:\n type: object\n required:\n - values\n - default\n - completed_values\n - definitions\n properties:\n values:\n $ref: \"#/$defs/stringSet\"\n default:\n $ref: \"#/$defs/nonEmptyString\"\n completed_values:\n $ref: \"#/$defs/stringSet\"\n skipped_values:\n $ref: \"#/$defs/stringSet\"\n default_skipped:\n $ref: \"#/$defs/nonEmptyString\"\n definitions:\n type: array\n items:\n $ref: \"#/$defs/statusDefinition\"\n additionalProperties: false\n priorityDefinition:\n type: object\n required:\n - value\n - label\n - color\n - weight\n properties:\n value:\n $ref: \"#/$defs/nonEmptyString\"\n label:\n type: string\n color:\n type: string\n icon:\n $ref: \"#/$defs/nonEmptyString\"\n weight:\n type: number\n additionalProperties: true\n priorityPolicy:\n type: object\n required:\n - values\n - default\n - definitions\n properties:\n values:\n $ref: \"#/$defs/stringSet\"\n default:\n $ref: \"#/$defs/nonEmptyString\"\n definitions:\n type: array\n items:\n $ref: \"#/$defs/priorityDefinition\"\n additionalProperties: false\n recurrencePolicy:\n type: object\n required:\n - syntax\n - maintain_due_date_offset\n - reset_body_checkboxes\n properties:\n syntax:\n const: tasknotes\n maintain_due_date_offset:\n type: boolean\n reset_body_checkboxes:\n type: boolean\n additionalProperties: false\n occurrencePolicy:\n type: object\n required:\n - identity_roles\n - default_materialization\n - default_next_trigger\n properties:\n identity_roles:\n const:\n - recurrenceParent\n - occurrenceDate\n default_materialization:\n enum:\n - manual\n - on_completion\n - rolling\n default_next_trigger:\n enum:\n - completion\n - completion_or_skip\n past_horizon:\n $ref: \"#/$defs/nonEmptyString\"\n future_horizon:\n $ref: \"#/$defs/nonEmptyString\"\n additionalProperties: false\n linkPolicy:\n type: object\n required:\n - accepted_formats\n - write_format\n properties:\n accepted_formats:\n type: array\n minItems: 1\n uniqueItems: true\n items:\n enum:\n - wikilink\n - markdown\n write_format:\n enum:\n - wikilink\n - markdown\n additionalProperties: false\n archivePolicy:\n type: object\n required:\n - archived_tag\n - move_on_archive\n properties:\n archived_tag:\n $ref: \"#/$defs/nonEmptyString\"\n move_on_archive:\n type: boolean\n folder:\n $ref: \"#/$defs/nonEmptyString\"\n additionalProperties: false\n timeTrackingPolicy:\n type: object\n required:\n - auto_stop_on_complete\n properties:\n auto_stop_on_complete:\n type: boolean\n additionalProperties: false\n templatingPolicy:\n type: object\n required:\n - enabled\n - occurrence_enabled\n properties:\n enabled:\n type: boolean\n template_path:\n $ref: \"#/$defs/nonEmptyString\"\n occurrence_enabled:\n type: boolean\n occurrence_template_path:\n $ref: \"#/$defs/nonEmptyString\"\n failure_mode:\n enum:\n - error\n - warning_fallback\n unknown_variable_policy:\n enum:\n - preserve\n - empty\n additionalProperties: false\n nlpTrigger:\n type: object\n required:\n - property_id\n - trigger\n - enabled\n properties:\n property_id:\n $ref: \"#/$defs/nonEmptyString\"\n trigger:\n $ref: \"#/$defs/nonEmptyString\"\n enabled:\n type: boolean\n additionalProperties: false\n nlpPolicy:\n type: object\n required:\n - triggers\n properties:\n triggers:\n type: array\n items:\n $ref: \"#/$defs/nlpTrigger\"\n additionalProperties: false\n---\n\n# TaskNotes task contract\n\nTypes implement this contract through `implements`; applications consume\nthe normalized contract view rather than assuming frontmatter names.\n" - }, - { - "source": "types/tasknotes-task/2.md", - "document": "---\nkind: mdbase.type\nname: task\nversion: 2\ndescription: A task managed by TaskNotes.\nmatch:\n where:\n tags:\n contains: task\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n type: object\n additionalProperties: true\n properties:\n id:\n type: string\n minLength: 1\n title:\n type: string\n minLength: 1\n status:\n enum: &a1\n - none\n - open\n - in-progress\n - done\n default: open\n priority:\n enum: &a3\n - none\n - low\n - normal\n - high\n default: normal\n due:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n scheduled:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n contexts:\n type: array\n items:\n type: string\n projects:\n type: array\n items:\n type: string\n assignees:\n type: array\n items:\n type: string\n minLength: 1\n pattern: \\S\n uniqueItems: true\n attachments:\n type: array\n items:\n type: string\n minLength: 1\n uniqueItems: true\n timeEstimate:\n type: integer\n minimum: 0\n completedDate:\n type: string\n format: date\n dateCreated:\n type: string\n format: date-time\n dateModified:\n type: string\n format: date-time\n recurrence:\n type: string\n recurrence_anchor:\n enum:\n - scheduled\n - completion\n default: scheduled\n occurrence_materialization:\n enum:\n - manual\n - on_completion\n - rolling\n default: manual\n occurrence_next_trigger:\n enum:\n - completion\n - completion_or_skip\n default: completion\n occurrence_template:\n type: string\n occurrence_past_horizon:\n type: string\n occurrence_future_horizon:\n type: string\n recurrence_parent:\n type: string\n occurrence_date:\n type: string\n format: date\n tags:\n type: array\n items:\n type: string\n timeEntries:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n startTime:\n type: string\n format: date-time\n endTime:\n type: string\n format: date-time\n description:\n type: string\n duration:\n type: integer\n reminders:\n type: array\n items:\n oneOf:\n - type: object\n required:\n - id\n - type\n - absoluteTime\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: absolute\n description:\n type: string\n absoluteTime:\n type: string\n format: date-time\n - type: object\n required:\n - id\n - type\n - relatedTo\n - offset\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: relative\n description:\n type: string\n relatedTo:\n enum:\n - due\n - scheduled\n offset:\n type: string\n blockedBy:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n uid:\n type: string\n reltype:\n type: string\n gap:\n type: string\n required:\n - uid\n complete_instances:\n type: array\n items:\n type: string\n format: date\n skipped_instances:\n type: array\n items:\n type: string\n format: date\n icsEventId:\n type: array\n items:\n type: string\n googleCalendarEventId:\n type: string\n googleCalendarExceptionEventId:\n type: string\n googleCalendarExceptionOriginalScheduled:\n type: string\n format: date\n googleCalendarMovedOriginalDates:\n type: array\n items:\n type: string\n format: date\n tasknotes_manual_order:\n type: string\n allOf:\n - if:\n required:\n - status\n properties:\n status:\n enum: &a2\n - done\n not:\n required:\n - recurrence\n then:\n required:\n - completedDate\n required:\n - title\n - status\n - dateCreated\ncollection:\n read_defaults:\n status: open\n priority: normal\n recurrence_anchor: scheduled\n occurrence_materialization: manual\n occurrence_next_trigger: completion\n links:\n projects[]:\n target_type: any\n validate_exists: false\n attachments[]:\n validate_exists: false\n occurrence_template:\n target_type: any\n validate_exists: false\n recurrence_parent:\n target_type: task\n validate_exists: false\n blockedBy[].uid:\n target_type: task\n validate_exists: false\n path:\n runtime: tasknotes\n template: \"{{zettel}}\"\n folder: tasks\n generated_by: tasknotes.filename.create\n display:\n name_field: title\n unique:\n - field: id\n scope: type\nlifecycle:\n on_create:\n set:\n id:\n uuid: true\n dateCreated:\n now: true\n dateModified:\n now: true\n on_update:\n set:\n dateModified:\n now: true\nimplements:\n - contract: tasknotes.task\n version: 0.3.0-rc.4\n fields:\n id: id\n title: title\n status: status\n priority: priority\n due: due\n scheduled: scheduled\n contexts: contexts\n projects: projects\n assignees: assignees\n attachments: attachments\n timeEstimate: timeEstimate\n completedDate: completedDate\n dateCreated: dateCreated\n dateModified: dateModified\n recurrence: recurrence\n recurrenceAnchor: recurrence_anchor\n occurrenceMaterialization: occurrence_materialization\n occurrenceNextTrigger: occurrence_next_trigger\n occurrenceTemplate: occurrence_template\n occurrencePastHorizon: occurrence_past_horizon\n occurrenceFutureHorizon: occurrence_future_horizon\n recurrenceParent: recurrence_parent\n occurrenceDate: occurrence_date\n tags: tags\n timeEntries: timeEntries\n reminders: reminders\n blockedBy: blockedBy\n completeInstances: complete_instances\n skippedInstances: skipped_instances\n icsEventId: icsEventId\n googleCalendarEventId: googleCalendarEventId\n googleCalendarExceptionEventId: googleCalendarExceptionEventId\n googleCalendarExceptionOriginalScheduled: googleCalendarExceptionOriginalScheduled\n googleCalendarMovedOriginalDates: googleCalendarMovedOriginalDates\n sortOrder: tasknotes_manual_order\n binding:\n profiles:\n - core-lite\n - recurrence\n - templating\n - materialized-occurrences\n - extended\n capabilities:\n - dependencies\n - reminders\n - attachments\n - links\n - time-tracking\n - materialized-occurrences\n - archive\n - templating\n title:\n storage: frontmatter\n filename_format: zettel\n status:\n values: *a1\n default: open\n completed_values: *a2\n skipped_values: []\n definitions:\n - value: none\n label: None\n color: \"#cccccc\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 0\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: open\n label: Open\n color: \"#808080\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 1\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: in-progress\n label: In progress\n color: \"#0066cc\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 2\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: done\n label: Done\n color: \"#00aa00\"\n is_completed: true\n is_skipped: false\n exclude_from_cycle: false\n order: 3\n auto_archive: false\n auto_archive_delay_minutes: 5\n priority:\n values: *a3\n default: normal\n definitions:\n - value: none\n label: None\n color: \"#cccccc\"\n weight: 0\n - value: low\n label: Low\n color: \"#00aa00\"\n weight: 1\n - value: normal\n label: Normal\n color: \"#ffaa00\"\n weight: 2\n - value: high\n label: High\n color: \"#ff0000\"\n weight: 3\n recurrence:\n syntax: tasknotes\n maintain_due_date_offset: true\n reset_body_checkboxes: false\n occurrences:\n identity_roles:\n - recurrenceParent\n - occurrenceDate\n default_materialization: manual\n default_next_trigger: completion\n past_horizon: P0D\n future_horizon: P14D\n links:\n accepted_formats:\n - wikilink\n - markdown\n write_format: wikilink\n archive:\n archived_tag: archived\n move_on_archive: false\n time_tracking:\n auto_stop_on_complete: false\n templating:\n enabled: false\n occurrence_enabled: false\nx-tasknotes-generator:\n managed_fields:\n - assignees\n - attachments\n - blockedBy\n - complete_instances\n - completedDate\n - contexts\n - dateCreated\n - dateModified\n - due\n - googleCalendarEventId\n - googleCalendarExceptionEventId\n - googleCalendarExceptionOriginalScheduled\n - googleCalendarMovedOriginalDates\n - icsEventId\n - id\n - occurrence_date\n - occurrence_future_horizon\n - occurrence_materialization\n - occurrence_next_trigger\n - occurrence_past_horizon\n - occurrence_template\n - priority\n - projects\n - recurrence\n - recurrence_anchor\n - recurrence_parent\n - reminders\n - scheduled\n - skipped_instances\n - status\n - tags\n - tasknotes_manual_order\n - timeEntries\n - timeEstimate\n - title\n---\n\n# Task\n\nThis type definition implements the TaskNotes contract for this mdbase collection.\nIts JSON Schema describes persisted task frontmatter; collection and lifecycle\nmetadata describe generic mdbase behavior; `implements` maps the portable\nTaskNotes task view and supplies TaskNotes behavior.\n\nChanges made here are loaded by TaskNotes. Portable changes made in TaskNotes\nsettings are written back while unknown extensions are preserved.\n" - }, - { - "source": "schemas/tasknotes.task/0.3.0-rc.4.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://tasknotes.dev/schemas/tasknotes-task.schema.json\",\n \"title\": \"TaskNotes portable task view\",\n \"description\": \"The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.4 record contract.\",\n \"type\": \"object\",\n \"required\": [\n \"status\",\n \"dateCreated\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"title\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"status\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"priority\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"due\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n ]\n },\n \"scheduled\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n ]\n },\n \"contexts\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"projects\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"assignees\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"pattern\": \"\\\\S\"\n },\n \"description\": \"Stable mdbase.person IDs. These references never grant collection access.\"\n },\n \"attachments\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"timeEstimate\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"completedDate\": {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n \"dateCreated\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"dateModified\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"recurrence\": {\n \"type\": \"string\"\n },\n \"recurrenceAnchor\": {\n \"enum\": [\n \"scheduled\",\n \"completion\"\n ]\n },\n \"recurrenceParent\": {\n \"type\": \"string\"\n },\n \"occurrenceDate\": {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n \"occurrenceMaterialization\": {\n \"enum\": [\n \"manual\",\n \"on_completion\",\n \"rolling\"\n ]\n },\n \"occurrenceNextTrigger\": {\n \"enum\": [\n \"completion\",\n \"completion_or_skip\"\n ]\n },\n \"occurrenceTemplate\": {\n \"type\": \"string\"\n },\n \"occurrencePastHorizon\": {\n \"type\": \"string\"\n },\n \"occurrenceFutureHorizon\": {\n \"type\": \"string\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"timeEntries\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"reminders\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"blockedBy\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"completeInstances\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"date\"\n }\n },\n \"skippedInstances\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"date\"\n }\n },\n \"icsEventId\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"googleCalendarEventId\": {\n \"type\": \"string\"\n },\n \"googleCalendarExceptionEventId\": {\n \"type\": \"string\"\n },\n \"googleCalendarExceptionOriginalScheduled\": {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n \"googleCalendarMovedOriginalDates\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"date\"\n }\n },\n \"sortOrder\": {\n \"type\": \"string\"\n }\n }\n}\n" - }, - { - "source": "schemas/tasknotes.task.binding/0.3.0-rc.4.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json\",\n \"title\": \"TaskNotes task data-contract binding\",\n \"description\": \"Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3.\",\n \"type\": \"object\",\n \"required\": [\n \"profiles\",\n \"capabilities\",\n \"title\",\n \"status\",\n \"priority\",\n \"recurrence\",\n \"occurrences\",\n \"links\",\n \"archive\",\n \"time_tracking\",\n \"templating\"\n ],\n \"properties\": {\n \"profiles\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"core-lite\",\n \"recurrence\",\n \"templating\",\n \"materialized-occurrences\",\n \"extended\"\n ]\n }\n },\n \"capabilities\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"dependencies\",\n \"reminders\",\n \"attachments\",\n \"links\",\n \"time-tracking\",\n \"materialized-occurrences\",\n \"rename\",\n \"archive\",\n \"batch\",\n \"concurrency\",\n \"dry-run\",\n \"migration\",\n \"templating\"\n ]\n }\n },\n \"title\": {\n \"$ref\": \"#/$defs/titlePolicy\"\n },\n \"status\": {\n \"$ref\": \"#/$defs/statusPolicy\"\n },\n \"priority\": {\n \"$ref\": \"#/$defs/priorityPolicy\"\n },\n \"recurrence\": {\n \"$ref\": \"#/$defs/recurrencePolicy\"\n },\n \"occurrences\": {\n \"$ref\": \"#/$defs/occurrencePolicy\"\n },\n \"links\": {\n \"$ref\": \"#/$defs/linkPolicy\"\n },\n \"archive\": {\n \"$ref\": \"#/$defs/archivePolicy\"\n },\n \"time_tracking\": {\n \"$ref\": \"#/$defs/timeTrackingPolicy\"\n },\n \"templating\": {\n \"$ref\": \"#/$defs/templatingPolicy\"\n },\n \"nlp\": {\n \"$ref\": \"#/$defs/nlpPolicy\"\n }\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"nonEmptyString\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"stringSet\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"titlePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"storage\"\n ],\n \"properties\": {\n \"storage\": {\n \"enum\": [\n \"filename\",\n \"frontmatter\"\n ]\n },\n \"filename_format\": {\n \"enum\": [\n \"title\",\n \"zettel\",\n \"timestamp\",\n \"uuid\",\n \"custom\"\n ]\n },\n \"custom_filename_template\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": {\n \"filename_format\": {\n \"const\": \"custom\"\n }\n },\n \"required\": [\n \"filename_format\"\n ]\n },\n \"then\": {\n \"properties\": {\n \"custom_filename_template\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"required\": [\n \"custom_filename_template\"\n ]\n }\n }\n ],\n \"additionalProperties\": true\n },\n \"statusDefinition\": {\n \"type\": \"object\",\n \"required\": [\n \"value\",\n \"label\",\n \"color\",\n \"is_completed\",\n \"is_skipped\",\n \"exclude_from_cycle\",\n \"order\",\n \"auto_archive\",\n \"auto_archive_delay_minutes\"\n ],\n \"properties\": {\n \"value\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"is_completed\": {\n \"type\": \"boolean\"\n },\n \"is_skipped\": {\n \"type\": \"boolean\"\n },\n \"exclude_from_cycle\": {\n \"type\": \"boolean\"\n },\n \"next_status\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"order\": {\n \"type\": \"number\"\n },\n \"auto_archive\": {\n \"type\": \"boolean\"\n },\n \"auto_archive_delay_minutes\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n },\n \"additionalProperties\": true\n },\n \"statusPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"values\",\n \"default\",\n \"completed_values\",\n \"definitions\"\n ],\n \"properties\": {\n \"values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"default\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"completed_values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"skipped_values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"default_skipped\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"definitions\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/statusDefinition\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"priorityDefinition\": {\n \"type\": \"object\",\n \"required\": [\n \"value\",\n \"label\",\n \"color\",\n \"weight\"\n ],\n \"properties\": {\n \"value\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"weight\": {\n \"type\": \"number\"\n }\n },\n \"additionalProperties\": true\n },\n \"priorityPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"values\",\n \"default\",\n \"definitions\"\n ],\n \"properties\": {\n \"values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"default\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"definitions\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/priorityDefinition\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"recurrencePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"syntax\",\n \"maintain_due_date_offset\",\n \"reset_body_checkboxes\"\n ],\n \"properties\": {\n \"syntax\": {\n \"const\": \"tasknotes\"\n },\n \"maintain_due_date_offset\": {\n \"type\": \"boolean\"\n },\n \"reset_body_checkboxes\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"occurrencePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"identity_roles\",\n \"default_materialization\",\n \"default_next_trigger\"\n ],\n \"properties\": {\n \"identity_roles\": {\n \"const\": [\n \"recurrenceParent\",\n \"occurrenceDate\"\n ]\n },\n \"default_materialization\": {\n \"enum\": [\n \"manual\",\n \"on_completion\",\n \"rolling\"\n ]\n },\n \"default_next_trigger\": {\n \"enum\": [\n \"completion\",\n \"completion_or_skip\"\n ]\n },\n \"past_horizon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"future_horizon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"additionalProperties\": false\n },\n \"linkPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"accepted_formats\",\n \"write_format\"\n ],\n \"properties\": {\n \"accepted_formats\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"wikilink\",\n \"markdown\"\n ]\n }\n },\n \"write_format\": {\n \"enum\": [\n \"wikilink\",\n \"markdown\"\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"archivePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"archived_tag\",\n \"move_on_archive\"\n ],\n \"properties\": {\n \"archived_tag\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"move_on_archive\": {\n \"type\": \"boolean\"\n },\n \"folder\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"additionalProperties\": false\n },\n \"timeTrackingPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"auto_stop_on_complete\"\n ],\n \"properties\": {\n \"auto_stop_on_complete\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"templatingPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"enabled\",\n \"occurrence_enabled\"\n ],\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"template_path\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"occurrence_enabled\": {\n \"type\": \"boolean\"\n },\n \"occurrence_template_path\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"failure_mode\": {\n \"enum\": [\n \"error\",\n \"warning_fallback\"\n ]\n },\n \"unknown_variable_policy\": {\n \"enum\": [\n \"preserve\",\n \"empty\"\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"nlpTrigger\": {\n \"type\": \"object\",\n \"required\": [\n \"property_id\",\n \"trigger\",\n \"enabled\"\n ],\n \"properties\": {\n \"property_id\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"trigger\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"nlpPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"triggers\"\n ],\n \"properties\": {\n \"triggers\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/nlpTrigger\"\n }\n }\n },\n \"additionalProperties\": false\n }\n }\n}\n" - } - ], - "provides": [ - { - "id": "tasknotes.task", - "version": "0.3.0-rc.4", - "digest": "sha256:6948f659df6af05ef95aa893f1d57849032546e8c6cfee8afd5afe566e4ceeb0" - } - ] -} diff --git a/public/contracts/packs/tasknotes.task/0.3.0-rc.14.json b/public/contracts/packs/tasknotes.task/0.3.0-rc.14.json deleted file mode 100644 index 4e7e126..0000000 --- a/public/contracts/packs/tasknotes.task/0.3.0-rc.14.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "manifest": { - "kind": "mdbase.type-pack", - "id": "tasknotes.task", - "version": "0.3.0-rc.14", - "name": "TaskNotes task type pack", - "description": "Portable tasks with a reviewed, atomic assignment upgrade.", - "resources": [ - { - "kind": "contract", - "mode": "managed", - "source": "contracts/tasknotes.task/0.3.0-rc.4.md", - "target": "_contracts/tasknotes.task.md", - "digest": "sha256:91165b7664f936bba9289aca984e2638901db7fedf68642ab755e8d0b424e734" - }, - { - "kind": "type", - "mode": "seed", - "source": "types/tasknotes-task/2.md", - "target": "_types/task.md", - "digest": "sha256:ade71117bd31e571f403511c48d432bab7a05dfd25e730ca2931f3afda7f7cd5", - "upgrade_from": { - "digest": "sha256:b7f8af7b18d77859dab1f1532c1b55c08c7c39879f55e4ef2a94cb7d2d2284eb", - "document": "---\nkind: mdbase.type\nname: task\nversion: 1\ndescription: A task managed by TaskNotes.\nmatch:\n where:\n tags:\n contains: task\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n type: object\n additionalProperties: true\n properties:\n id:\n type: string\n minLength: 1\n title:\n type: string\n minLength: 1\n status:\n enum: &a2\n - none\n - open\n - in-progress\n - done\n - cancelled\n default: open\n priority:\n enum: &a4\n - none\n - low\n - normal\n - high\n default: normal\n due: &a1\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n scheduled: *a1\n contexts:\n type: array\n items:\n type: string\n projects:\n type: array\n items:\n type: string\n attachments:\n type: array\n items:\n type: string\n minLength: 1\n uniqueItems: true\n timeEstimate:\n type: integer\n minimum: 0\n completedDate:\n type: string\n format: date\n dateCreated:\n type: string\n format: date-time\n dateModified:\n type: string\n format: date-time\n recurrence:\n type: string\n recurrence_anchor:\n enum:\n - scheduled\n - completion\n default: scheduled\n occurrence_materialization:\n enum:\n - manual\n - on_completion\n - rolling\n default: manual\n occurrence_next_trigger:\n enum:\n - completion\n - completion_or_skip\n default: completion\n occurrence_template:\n type: string\n occurrence_past_horizon:\n type: string\n occurrence_future_horizon:\n type: string\n recurrence_parent:\n type: string\n occurrence_date:\n type: string\n format: date\n tags:\n type: array\n items:\n type: string\n timeEntries:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n startTime:\n type: string\n format: date-time\n endTime:\n type: string\n format: date-time\n description:\n type: string\n duration:\n type: integer\n reminders:\n type: array\n items:\n oneOf:\n - type: object\n required:\n - id\n - type\n - absoluteTime\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: absolute\n description:\n type: string\n absoluteTime:\n type: string\n format: date-time\n - type: object\n required:\n - id\n - type\n - relatedTo\n - offset\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: relative\n description:\n type: string\n relatedTo:\n enum:\n - due\n - scheduled\n offset:\n type: string\n blockedBy:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n uid:\n type: string\n reltype:\n type: string\n gap:\n type: string\n required:\n - uid\n complete_instances:\n type: array\n items:\n type: string\n format: date\n skipped_instances:\n type: array\n items:\n type: string\n format: date\n icsEventId:\n type: array\n items:\n type: string\n googleCalendarEventId:\n type: string\n googleCalendarExceptionEventId:\n type: string\n googleCalendarExceptionOriginalScheduled:\n type: string\n format: date\n googleCalendarMovedOriginalDates:\n type: array\n items:\n type: string\n format: date\n tasknotes_manual_order:\n type: string\n allOf:\n - if:\n required:\n - status\n properties:\n status:\n enum: &a3\n - done\n not:\n required:\n - recurrence\n then:\n required:\n - completedDate\n required:\n - title\n - status\n - dateCreated\ncollection:\n read_defaults:\n status: open\n priority: normal\n recurrence_anchor: scheduled\n occurrence_materialization: manual\n occurrence_next_trigger: completion\n links:\n projects[]:\n target_type: any\n validate_exists: false\n attachments[]:\n validate_exists: false\n occurrence_template:\n target_type: any\n validate_exists: false\n recurrence_parent:\n target_type: task\n validate_exists: false\n blockedBy[].uid:\n target_type: task\n validate_exists: false\n path:\n runtime: tasknotes\n template: \"{{zettel}}\"\n folder: tasks\n generated_by: tasknotes.filename.create\n display:\n name_field: title\n unique:\n - field: id\n scope: type\nlifecycle:\n on_create:\n set:\n id:\n uuid: true\n dateCreated:\n now: true\n dateModified:\n now: true\n on_update:\n set:\n dateModified:\n now: true\nimplements:\n - contract: tasknotes.task\n version: 0.3.0-rc.3\n fields:\n id: id\n title: title\n status: status\n priority: priority\n due: due\n scheduled: scheduled\n contexts: contexts\n projects: projects\n attachments: attachments\n timeEstimate: timeEstimate\n completedDate: completedDate\n dateCreated: dateCreated\n dateModified: dateModified\n recurrence: recurrence\n recurrenceAnchor: recurrence_anchor\n occurrenceMaterialization: occurrence_materialization\n occurrenceNextTrigger: occurrence_next_trigger\n occurrenceTemplate: occurrence_template\n occurrencePastHorizon: occurrence_past_horizon\n occurrenceFutureHorizon: occurrence_future_horizon\n recurrenceParent: recurrence_parent\n occurrenceDate: occurrence_date\n tags: tags\n timeEntries: timeEntries\n reminders: reminders\n blockedBy: blockedBy\n completeInstances: complete_instances\n skippedInstances: skipped_instances\n icsEventId: icsEventId\n googleCalendarEventId: googleCalendarEventId\n googleCalendarExceptionEventId: googleCalendarExceptionEventId\n googleCalendarExceptionOriginalScheduled: googleCalendarExceptionOriginalScheduled\n googleCalendarMovedOriginalDates: googleCalendarMovedOriginalDates\n sortOrder: tasknotes_manual_order\n binding:\n profiles:\n - core-lite\n - recurrence\n - materialized-occurrences\n capabilities:\n - dependencies\n - reminders\n - attachments\n - links\n - time-tracking\n - materialized-occurrences\n - archive\n - templating\n title:\n storage: frontmatter\n filename_format: zettel\n status:\n values: *a2\n default: open\n completed_values: *a3\n skipped_values:\n - cancelled\n default_skipped: cancelled\n definitions:\n - value: none\n label: None\n color: \"#94a3b8\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 0\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: open\n label: Open\n color: \"#64748b\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 1\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: in-progress\n label: In progress\n color: \"#3b82f6\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 2\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: done\n label: Done\n color: \"#22c55e\"\n is_completed: true\n is_skipped: false\n exclude_from_cycle: false\n order: 3\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: cancelled\n label: Cancelled\n color: \"#94a3b8\"\n is_completed: false\n is_skipped: true\n exclude_from_cycle: true\n order: 4\n auto_archive: false\n auto_archive_delay_minutes: 5\n priority:\n values: *a4\n default: normal\n definitions:\n - value: none\n label: None\n color: \"#94a3b8\"\n weight: 0\n - value: low\n label: Low\n color: \"#3b82f6\"\n weight: 1\n - value: normal\n label: Normal\n color: \"#f59e0b\"\n weight: 2\n - value: high\n label: High\n color: \"#ef4444\"\n weight: 3\n recurrence:\n syntax: tasknotes\n maintain_due_date_offset: true\n reset_body_checkboxes: false\n occurrences:\n identity_roles:\n - recurrenceParent\n - occurrenceDate\n default_materialization: manual\n default_next_trigger: completion\n past_horizon: P0D\n future_horizon: P14D\n links:\n accepted_formats:\n - wikilink\n - markdown\n write_format: wikilink\n archive:\n archived_tag: archived\n move_on_archive: false\n time_tracking:\n auto_stop_on_complete: false\n templating:\n enabled: false\n occurrence_enabled: false\nx-tasknotes-generator:\n managed_fields:\n - attachments\n - blockedBy\n - complete_instances\n - completedDate\n - contexts\n - dateCreated\n - dateModified\n - due\n - googleCalendarEventId\n - googleCalendarExceptionEventId\n - googleCalendarExceptionOriginalScheduled\n - googleCalendarMovedOriginalDates\n - icsEventId\n - id\n - occurrence_date\n - occurrence_future_horizon\n - occurrence_materialization\n - occurrence_next_trigger\n - occurrence_past_horizon\n - occurrence_template\n - priority\n - projects\n - recurrence\n - recurrence_anchor\n - recurrence_parent\n - reminders\n - scheduled\n - skipped_instances\n - status\n - tags\n - tasknotes_manual_order\n - timeEntries\n - timeEstimate\n - title\n---\n# Task\n\nTask records live under `tasks/`.\n" - } - }, - { - "kind": "schema", - "mode": "managed", - "source": "schemas/tasknotes.task/0.3.0-rc.4.schema.json", - "target": "_schemas/tasknotes/tasknotes-task.schema.json", - "digest": "sha256:2ea0d6b968ec2329e87ed60c2685d490e0f66f2bc7b3a23547d8fc55a7936fbe" - }, - { - "kind": "schema", - "mode": "managed", - "source": "schemas/tasknotes.task.binding/0.3.0-rc.4.schema.json", - "target": "_schemas/tasknotes/tasknotes-task-binding.schema.json", - "digest": "sha256:5b38e8a1c426b7f7fa92d8353fe35dd98e632305cbb15ffccde387473166b267" - } - ] - }, - "resources": [ - { - "source": "contracts/tasknotes.task/0.3.0-rc.4.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: tasknotes.task\nversion: 0.3.0-rc.4\nname: TaskNotes task\ndescription: Portable task data and behavior defined by tasknotes-spec 0.3.0-rc.4.\nrecord_schema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n $id: https://tasknotes.dev/schemas/tasknotes-task.schema.json\n title: TaskNotes portable task view\n description: The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.4 record contract.\n type: object\n required:\n - status\n - dateCreated\n additionalProperties: false\n properties:\n id:\n type: string\n minLength: 1\n title:\n type: string\n minLength: 1\n status:\n type: string\n minLength: 1\n priority:\n type: string\n minLength: 1\n due:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n scheduled:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n contexts:\n type: array\n items:\n type: string\n projects:\n type: array\n items:\n type: string\n assignees:\n type: array\n uniqueItems: true\n items:\n type: string\n minLength: 1\n pattern: \\S\n description: Stable mdbase.person IDs. These references never grant collection access.\n attachments:\n type: array\n uniqueItems: true\n items:\n type: string\n minLength: 1\n timeEstimate:\n type: integer\n minimum: 0\n completedDate:\n type: string\n format: date\n dateCreated:\n type: string\n format: date-time\n dateModified:\n type: string\n format: date-time\n recurrence:\n type: string\n recurrenceAnchor:\n enum:\n - scheduled\n - completion\n recurrenceParent:\n type: string\n occurrenceDate:\n type: string\n format: date\n occurrenceMaterialization:\n enum:\n - manual\n - on_completion\n - rolling\n occurrenceNextTrigger:\n enum:\n - completion\n - completion_or_skip\n occurrenceTemplate:\n type: string\n occurrencePastHorizon:\n type: string\n occurrenceFutureHorizon:\n type: string\n tags:\n type: array\n items:\n type: string\n timeEntries:\n type: array\n items:\n type: object\n reminders:\n type: array\n items:\n type: object\n blockedBy:\n type: array\n items:\n type: object\n completeInstances:\n type: array\n items:\n type: string\n format: date\n skippedInstances:\n type: array\n items:\n type: string\n format: date\n icsEventId:\n type: array\n items:\n type: string\n googleCalendarEventId:\n type: string\n googleCalendarExceptionEventId:\n type: string\n googleCalendarExceptionOriginalScheduled:\n type: string\n format: date\n googleCalendarMovedOriginalDates:\n type: array\n items:\n type: string\n format: date\n sortOrder:\n type: string\nbinding_schema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n $id: https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json\n title: TaskNotes task data-contract binding\n description: Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3.\n type: object\n required:\n - profiles\n - capabilities\n - title\n - status\n - priority\n - recurrence\n - occurrences\n - links\n - archive\n - time_tracking\n - templating\n properties:\n profiles:\n type: array\n minItems: 1\n uniqueItems: true\n items:\n enum:\n - core-lite\n - recurrence\n - templating\n - materialized-occurrences\n - extended\n capabilities:\n type: array\n uniqueItems: true\n items:\n enum:\n - dependencies\n - reminders\n - attachments\n - links\n - time-tracking\n - materialized-occurrences\n - rename\n - archive\n - batch\n - concurrency\n - dry-run\n - migration\n - templating\n title:\n $ref: \"#/$defs/titlePolicy\"\n status:\n $ref: \"#/$defs/statusPolicy\"\n priority:\n $ref: \"#/$defs/priorityPolicy\"\n recurrence:\n $ref: \"#/$defs/recurrencePolicy\"\n occurrences:\n $ref: \"#/$defs/occurrencePolicy\"\n links:\n $ref: \"#/$defs/linkPolicy\"\n archive:\n $ref: \"#/$defs/archivePolicy\"\n time_tracking:\n $ref: \"#/$defs/timeTrackingPolicy\"\n templating:\n $ref: \"#/$defs/templatingPolicy\"\n nlp:\n $ref: \"#/$defs/nlpPolicy\"\n additionalProperties: false\n $defs:\n nonEmptyString:\n type: string\n minLength: 1\n stringSet:\n type: array\n uniqueItems: true\n items:\n $ref: \"#/$defs/nonEmptyString\"\n titlePolicy:\n type: object\n required:\n - storage\n properties:\n storage:\n enum:\n - filename\n - frontmatter\n filename_format:\n enum:\n - title\n - zettel\n - timestamp\n - uuid\n - custom\n custom_filename_template:\n $ref: \"#/$defs/nonEmptyString\"\n allOf:\n - if:\n properties:\n filename_format:\n const: custom\n required:\n - filename_format\n then:\n properties:\n custom_filename_template:\n $ref: \"#/$defs/nonEmptyString\"\n required:\n - custom_filename_template\n additionalProperties: true\n statusDefinition:\n type: object\n required:\n - value\n - label\n - color\n - is_completed\n - is_skipped\n - exclude_from_cycle\n - order\n - auto_archive\n - auto_archive_delay_minutes\n properties:\n value:\n $ref: \"#/$defs/nonEmptyString\"\n label:\n type: string\n color:\n type: string\n icon:\n $ref: \"#/$defs/nonEmptyString\"\n is_completed:\n type: boolean\n is_skipped:\n type: boolean\n exclude_from_cycle:\n type: boolean\n next_status:\n $ref: \"#/$defs/nonEmptyString\"\n order:\n type: number\n auto_archive:\n type: boolean\n auto_archive_delay_minutes:\n type: number\n minimum: 0\n additionalProperties: true\n statusPolicy:\n type: object\n required:\n - values\n - default\n - completed_values\n - definitions\n properties:\n values:\n $ref: \"#/$defs/stringSet\"\n default:\n $ref: \"#/$defs/nonEmptyString\"\n completed_values:\n $ref: \"#/$defs/stringSet\"\n skipped_values:\n $ref: \"#/$defs/stringSet\"\n default_skipped:\n $ref: \"#/$defs/nonEmptyString\"\n definitions:\n type: array\n items:\n $ref: \"#/$defs/statusDefinition\"\n additionalProperties: false\n priorityDefinition:\n type: object\n required:\n - value\n - label\n - color\n - weight\n properties:\n value:\n $ref: \"#/$defs/nonEmptyString\"\n label:\n type: string\n color:\n type: string\n icon:\n $ref: \"#/$defs/nonEmptyString\"\n weight:\n type: number\n additionalProperties: true\n priorityPolicy:\n type: object\n required:\n - values\n - default\n - definitions\n properties:\n values:\n $ref: \"#/$defs/stringSet\"\n default:\n $ref: \"#/$defs/nonEmptyString\"\n definitions:\n type: array\n items:\n $ref: \"#/$defs/priorityDefinition\"\n additionalProperties: false\n recurrencePolicy:\n type: object\n required:\n - syntax\n - maintain_due_date_offset\n - reset_body_checkboxes\n properties:\n syntax:\n const: tasknotes\n maintain_due_date_offset:\n type: boolean\n reset_body_checkboxes:\n type: boolean\n additionalProperties: false\n occurrencePolicy:\n type: object\n required:\n - identity_roles\n - default_materialization\n - default_next_trigger\n properties:\n identity_roles:\n const:\n - recurrenceParent\n - occurrenceDate\n default_materialization:\n enum:\n - manual\n - on_completion\n - rolling\n default_next_trigger:\n enum:\n - completion\n - completion_or_skip\n past_horizon:\n $ref: \"#/$defs/nonEmptyString\"\n future_horizon:\n $ref: \"#/$defs/nonEmptyString\"\n additionalProperties: false\n linkPolicy:\n type: object\n required:\n - accepted_formats\n - write_format\n properties:\n accepted_formats:\n type: array\n minItems: 1\n uniqueItems: true\n items:\n enum:\n - wikilink\n - markdown\n write_format:\n enum:\n - wikilink\n - markdown\n additionalProperties: false\n archivePolicy:\n type: object\n required:\n - archived_tag\n - move_on_archive\n properties:\n archived_tag:\n $ref: \"#/$defs/nonEmptyString\"\n move_on_archive:\n type: boolean\n folder:\n $ref: \"#/$defs/nonEmptyString\"\n additionalProperties: false\n timeTrackingPolicy:\n type: object\n required:\n - auto_stop_on_complete\n properties:\n auto_stop_on_complete:\n type: boolean\n additionalProperties: false\n templatingPolicy:\n type: object\n required:\n - enabled\n - occurrence_enabled\n properties:\n enabled:\n type: boolean\n template_path:\n $ref: \"#/$defs/nonEmptyString\"\n occurrence_enabled:\n type: boolean\n occurrence_template_path:\n $ref: \"#/$defs/nonEmptyString\"\n failure_mode:\n enum:\n - error\n - warning_fallback\n unknown_variable_policy:\n enum:\n - preserve\n - empty\n additionalProperties: false\n nlpTrigger:\n type: object\n required:\n - property_id\n - trigger\n - enabled\n properties:\n property_id:\n $ref: \"#/$defs/nonEmptyString\"\n trigger:\n $ref: \"#/$defs/nonEmptyString\"\n enabled:\n type: boolean\n additionalProperties: false\n nlpPolicy:\n type: object\n required:\n - triggers\n properties:\n triggers:\n type: array\n items:\n $ref: \"#/$defs/nlpTrigger\"\n additionalProperties: false\n---\n\n# TaskNotes task contract\n\nTypes implement this contract through `implements`; applications consume\nthe normalized contract view rather than assuming frontmatter names.\n" - }, - { - "source": "types/tasknotes-task/2.md", - "document": "---\nkind: mdbase.type\nname: task\nversion: 2\ndescription: A task managed by TaskNotes.\nmatch:\n where:\n tags:\n contains: task\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n type: object\n additionalProperties: true\n properties:\n id:\n type: string\n minLength: 1\n title:\n type: string\n minLength: 1\n status:\n enum: &a1\n - none\n - open\n - in-progress\n - done\n default: open\n priority:\n enum: &a3\n - none\n - low\n - normal\n - high\n default: normal\n due:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n scheduled:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n contexts:\n type: array\n items:\n type: string\n projects:\n type: array\n items:\n type: string\n assignees:\n type: array\n items:\n type: string\n minLength: 1\n pattern: \\S\n uniqueItems: true\n attachments:\n type: array\n items:\n type: string\n minLength: 1\n uniqueItems: true\n timeEstimate:\n type: integer\n minimum: 0\n completedDate:\n type: string\n format: date\n dateCreated:\n type: string\n format: date-time\n dateModified:\n type: string\n format: date-time\n recurrence:\n type: string\n recurrence_anchor:\n enum:\n - scheduled\n - completion\n default: scheduled\n occurrence_materialization:\n enum:\n - manual\n - on_completion\n - rolling\n default: manual\n occurrence_next_trigger:\n enum:\n - completion\n - completion_or_skip\n default: completion\n occurrence_template:\n type: string\n occurrence_past_horizon:\n type: string\n occurrence_future_horizon:\n type: string\n recurrence_parent:\n type: string\n occurrence_date:\n type: string\n format: date\n tags:\n type: array\n items:\n type: string\n timeEntries:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n startTime:\n type: string\n format: date-time\n endTime:\n type: string\n format: date-time\n description:\n type: string\n duration:\n type: integer\n reminders:\n type: array\n items:\n oneOf:\n - type: object\n required:\n - id\n - type\n - absoluteTime\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: absolute\n description:\n type: string\n absoluteTime:\n type: string\n format: date-time\n - type: object\n required:\n - id\n - type\n - relatedTo\n - offset\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: relative\n description:\n type: string\n relatedTo:\n enum:\n - due\n - scheduled\n offset:\n type: string\n blockedBy:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n uid:\n type: string\n reltype:\n type: string\n gap:\n type: string\n required:\n - uid\n complete_instances:\n type: array\n items:\n type: string\n format: date\n skipped_instances:\n type: array\n items:\n type: string\n format: date\n icsEventId:\n type: array\n items:\n type: string\n googleCalendarEventId:\n type: string\n googleCalendarExceptionEventId:\n type: string\n googleCalendarExceptionOriginalScheduled:\n type: string\n format: date\n googleCalendarMovedOriginalDates:\n type: array\n items:\n type: string\n format: date\n tasknotes_manual_order:\n type: string\n allOf:\n - if:\n required:\n - status\n properties:\n status:\n enum: &a2\n - done\n not:\n required:\n - recurrence\n then:\n required:\n - completedDate\n required:\n - title\n - status\n - dateCreated\ncollection:\n read_defaults:\n status: open\n priority: normal\n recurrence_anchor: scheduled\n occurrence_materialization: manual\n occurrence_next_trigger: completion\n links:\n projects[]:\n target_type: any\n validate_exists: false\n attachments[]:\n validate_exists: false\n occurrence_template:\n target_type: any\n validate_exists: false\n recurrence_parent:\n target_type: task\n validate_exists: false\n blockedBy[].uid:\n target_type: task\n validate_exists: false\n path:\n runtime: tasknotes\n template: \"{{zettel}}\"\n folder: tasks\n generated_by: tasknotes.filename.create\n display:\n name_field: title\n unique:\n - field: id\n scope: type\nlifecycle:\n on_create:\n set:\n id:\n uuid: true\n dateCreated:\n now: true\n dateModified:\n now: true\n on_update:\n set:\n dateModified:\n now: true\nimplements:\n - contract: tasknotes.task\n version: 0.3.0-rc.4\n fields:\n id: id\n title: title\n status: status\n priority: priority\n due: due\n scheduled: scheduled\n contexts: contexts\n projects: projects\n assignees: assignees\n attachments: attachments\n timeEstimate: timeEstimate\n completedDate: completedDate\n dateCreated: dateCreated\n dateModified: dateModified\n recurrence: recurrence\n recurrenceAnchor: recurrence_anchor\n occurrenceMaterialization: occurrence_materialization\n occurrenceNextTrigger: occurrence_next_trigger\n occurrenceTemplate: occurrence_template\n occurrencePastHorizon: occurrence_past_horizon\n occurrenceFutureHorizon: occurrence_future_horizon\n recurrenceParent: recurrence_parent\n occurrenceDate: occurrence_date\n tags: tags\n timeEntries: timeEntries\n reminders: reminders\n blockedBy: blockedBy\n completeInstances: complete_instances\n skippedInstances: skipped_instances\n icsEventId: icsEventId\n googleCalendarEventId: googleCalendarEventId\n googleCalendarExceptionEventId: googleCalendarExceptionEventId\n googleCalendarExceptionOriginalScheduled: googleCalendarExceptionOriginalScheduled\n googleCalendarMovedOriginalDates: googleCalendarMovedOriginalDates\n sortOrder: tasknotes_manual_order\n binding:\n profiles:\n - core-lite\n - recurrence\n - templating\n - materialized-occurrences\n - extended\n capabilities:\n - dependencies\n - reminders\n - attachments\n - links\n - time-tracking\n - materialized-occurrences\n - archive\n - templating\n title:\n storage: frontmatter\n filename_format: zettel\n status:\n values: *a1\n default: open\n completed_values: *a2\n skipped_values: []\n definitions:\n - value: none\n label: None\n color: \"#cccccc\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 0\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: open\n label: Open\n color: \"#808080\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 1\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: in-progress\n label: In progress\n color: \"#0066cc\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 2\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: done\n label: Done\n color: \"#00aa00\"\n is_completed: true\n is_skipped: false\n exclude_from_cycle: false\n order: 3\n auto_archive: false\n auto_archive_delay_minutes: 5\n priority:\n values: *a3\n default: normal\n definitions:\n - value: none\n label: None\n color: \"#cccccc\"\n weight: 0\n - value: low\n label: Low\n color: \"#00aa00\"\n weight: 1\n - value: normal\n label: Normal\n color: \"#ffaa00\"\n weight: 2\n - value: high\n label: High\n color: \"#ff0000\"\n weight: 3\n recurrence:\n syntax: tasknotes\n maintain_due_date_offset: true\n reset_body_checkboxes: false\n occurrences:\n identity_roles:\n - recurrenceParent\n - occurrenceDate\n default_materialization: manual\n default_next_trigger: completion\n past_horizon: P0D\n future_horizon: P14D\n links:\n accepted_formats:\n - wikilink\n - markdown\n write_format: wikilink\n archive:\n archived_tag: archived\n move_on_archive: false\n time_tracking:\n auto_stop_on_complete: false\n templating:\n enabled: false\n occurrence_enabled: false\nx-tasknotes-generator:\n managed_fields:\n - assignees\n - attachments\n - blockedBy\n - complete_instances\n - completedDate\n - contexts\n - dateCreated\n - dateModified\n - due\n - googleCalendarEventId\n - googleCalendarExceptionEventId\n - googleCalendarExceptionOriginalScheduled\n - googleCalendarMovedOriginalDates\n - icsEventId\n - id\n - occurrence_date\n - occurrence_future_horizon\n - occurrence_materialization\n - occurrence_next_trigger\n - occurrence_past_horizon\n - occurrence_template\n - priority\n - projects\n - recurrence\n - recurrence_anchor\n - recurrence_parent\n - reminders\n - scheduled\n - skipped_instances\n - status\n - tags\n - tasknotes_manual_order\n - timeEntries\n - timeEstimate\n - title\n---\n\n# Task\n\nThis type definition implements the TaskNotes contract for this mdbase collection.\nIts JSON Schema describes persisted task frontmatter; collection and lifecycle\nmetadata describe generic mdbase behavior; `implements` maps the portable\nTaskNotes task view and supplies TaskNotes behavior.\n\nChanges made here are loaded by TaskNotes. Portable changes made in TaskNotes\nsettings are written back while unknown extensions are preserved.\n" - }, - { - "source": "schemas/tasknotes.task/0.3.0-rc.4.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://tasknotes.dev/schemas/tasknotes-task.schema.json\",\n \"title\": \"TaskNotes portable task view\",\n \"description\": \"The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.4 record contract.\",\n \"type\": \"object\",\n \"required\": [\n \"status\",\n \"dateCreated\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"title\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"status\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"priority\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"due\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n ]\n },\n \"scheduled\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n ]\n },\n \"contexts\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"projects\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"assignees\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"pattern\": \"\\\\S\"\n },\n \"description\": \"Stable mdbase.person IDs. These references never grant collection access.\"\n },\n \"attachments\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"timeEstimate\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"completedDate\": {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n \"dateCreated\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"dateModified\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"recurrence\": {\n \"type\": \"string\"\n },\n \"recurrenceAnchor\": {\n \"enum\": [\n \"scheduled\",\n \"completion\"\n ]\n },\n \"recurrenceParent\": {\n \"type\": \"string\"\n },\n \"occurrenceDate\": {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n \"occurrenceMaterialization\": {\n \"enum\": [\n \"manual\",\n \"on_completion\",\n \"rolling\"\n ]\n },\n \"occurrenceNextTrigger\": {\n \"enum\": [\n \"completion\",\n \"completion_or_skip\"\n ]\n },\n \"occurrenceTemplate\": {\n \"type\": \"string\"\n },\n \"occurrencePastHorizon\": {\n \"type\": \"string\"\n },\n \"occurrenceFutureHorizon\": {\n \"type\": \"string\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"timeEntries\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"reminders\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"blockedBy\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"completeInstances\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"date\"\n }\n },\n \"skippedInstances\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"date\"\n }\n },\n \"icsEventId\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"googleCalendarEventId\": {\n \"type\": \"string\"\n },\n \"googleCalendarExceptionEventId\": {\n \"type\": \"string\"\n },\n \"googleCalendarExceptionOriginalScheduled\": {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n \"googleCalendarMovedOriginalDates\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"date\"\n }\n },\n \"sortOrder\": {\n \"type\": \"string\"\n }\n }\n}\n" - }, - { - "source": "schemas/tasknotes.task.binding/0.3.0-rc.4.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json\",\n \"title\": \"TaskNotes task data-contract binding\",\n \"description\": \"Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3.\",\n \"type\": \"object\",\n \"required\": [\n \"profiles\",\n \"capabilities\",\n \"title\",\n \"status\",\n \"priority\",\n \"recurrence\",\n \"occurrences\",\n \"links\",\n \"archive\",\n \"time_tracking\",\n \"templating\"\n ],\n \"properties\": {\n \"profiles\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"core-lite\",\n \"recurrence\",\n \"templating\",\n \"materialized-occurrences\",\n \"extended\"\n ]\n }\n },\n \"capabilities\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"dependencies\",\n \"reminders\",\n \"attachments\",\n \"links\",\n \"time-tracking\",\n \"materialized-occurrences\",\n \"rename\",\n \"archive\",\n \"batch\",\n \"concurrency\",\n \"dry-run\",\n \"migration\",\n \"templating\"\n ]\n }\n },\n \"title\": {\n \"$ref\": \"#/$defs/titlePolicy\"\n },\n \"status\": {\n \"$ref\": \"#/$defs/statusPolicy\"\n },\n \"priority\": {\n \"$ref\": \"#/$defs/priorityPolicy\"\n },\n \"recurrence\": {\n \"$ref\": \"#/$defs/recurrencePolicy\"\n },\n \"occurrences\": {\n \"$ref\": \"#/$defs/occurrencePolicy\"\n },\n \"links\": {\n \"$ref\": \"#/$defs/linkPolicy\"\n },\n \"archive\": {\n \"$ref\": \"#/$defs/archivePolicy\"\n },\n \"time_tracking\": {\n \"$ref\": \"#/$defs/timeTrackingPolicy\"\n },\n \"templating\": {\n \"$ref\": \"#/$defs/templatingPolicy\"\n },\n \"nlp\": {\n \"$ref\": \"#/$defs/nlpPolicy\"\n }\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"nonEmptyString\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"stringSet\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"titlePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"storage\"\n ],\n \"properties\": {\n \"storage\": {\n \"enum\": [\n \"filename\",\n \"frontmatter\"\n ]\n },\n \"filename_format\": {\n \"enum\": [\n \"title\",\n \"zettel\",\n \"timestamp\",\n \"uuid\",\n \"custom\"\n ]\n },\n \"custom_filename_template\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": {\n \"filename_format\": {\n \"const\": \"custom\"\n }\n },\n \"required\": [\n \"filename_format\"\n ]\n },\n \"then\": {\n \"properties\": {\n \"custom_filename_template\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"required\": [\n \"custom_filename_template\"\n ]\n }\n }\n ],\n \"additionalProperties\": true\n },\n \"statusDefinition\": {\n \"type\": \"object\",\n \"required\": [\n \"value\",\n \"label\",\n \"color\",\n \"is_completed\",\n \"is_skipped\",\n \"exclude_from_cycle\",\n \"order\",\n \"auto_archive\",\n \"auto_archive_delay_minutes\"\n ],\n \"properties\": {\n \"value\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"is_completed\": {\n \"type\": \"boolean\"\n },\n \"is_skipped\": {\n \"type\": \"boolean\"\n },\n \"exclude_from_cycle\": {\n \"type\": \"boolean\"\n },\n \"next_status\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"order\": {\n \"type\": \"number\"\n },\n \"auto_archive\": {\n \"type\": \"boolean\"\n },\n \"auto_archive_delay_minutes\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n },\n \"additionalProperties\": true\n },\n \"statusPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"values\",\n \"default\",\n \"completed_values\",\n \"definitions\"\n ],\n \"properties\": {\n \"values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"default\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"completed_values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"skipped_values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"default_skipped\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"definitions\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/statusDefinition\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"priorityDefinition\": {\n \"type\": \"object\",\n \"required\": [\n \"value\",\n \"label\",\n \"color\",\n \"weight\"\n ],\n \"properties\": {\n \"value\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"weight\": {\n \"type\": \"number\"\n }\n },\n \"additionalProperties\": true\n },\n \"priorityPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"values\",\n \"default\",\n \"definitions\"\n ],\n \"properties\": {\n \"values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"default\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"definitions\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/priorityDefinition\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"recurrencePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"syntax\",\n \"maintain_due_date_offset\",\n \"reset_body_checkboxes\"\n ],\n \"properties\": {\n \"syntax\": {\n \"const\": \"tasknotes\"\n },\n \"maintain_due_date_offset\": {\n \"type\": \"boolean\"\n },\n \"reset_body_checkboxes\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"occurrencePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"identity_roles\",\n \"default_materialization\",\n \"default_next_trigger\"\n ],\n \"properties\": {\n \"identity_roles\": {\n \"const\": [\n \"recurrenceParent\",\n \"occurrenceDate\"\n ]\n },\n \"default_materialization\": {\n \"enum\": [\n \"manual\",\n \"on_completion\",\n \"rolling\"\n ]\n },\n \"default_next_trigger\": {\n \"enum\": [\n \"completion\",\n \"completion_or_skip\"\n ]\n },\n \"past_horizon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"future_horizon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"additionalProperties\": false\n },\n \"linkPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"accepted_formats\",\n \"write_format\"\n ],\n \"properties\": {\n \"accepted_formats\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"wikilink\",\n \"markdown\"\n ]\n }\n },\n \"write_format\": {\n \"enum\": [\n \"wikilink\",\n \"markdown\"\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"archivePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"archived_tag\",\n \"move_on_archive\"\n ],\n \"properties\": {\n \"archived_tag\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"move_on_archive\": {\n \"type\": \"boolean\"\n },\n \"folder\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"additionalProperties\": false\n },\n \"timeTrackingPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"auto_stop_on_complete\"\n ],\n \"properties\": {\n \"auto_stop_on_complete\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"templatingPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"enabled\",\n \"occurrence_enabled\"\n ],\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"template_path\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"occurrence_enabled\": {\n \"type\": \"boolean\"\n },\n \"occurrence_template_path\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"failure_mode\": {\n \"enum\": [\n \"error\",\n \"warning_fallback\"\n ]\n },\n \"unknown_variable_policy\": {\n \"enum\": [\n \"preserve\",\n \"empty\"\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"nlpTrigger\": {\n \"type\": \"object\",\n \"required\": [\n \"property_id\",\n \"trigger\",\n \"enabled\"\n ],\n \"properties\": {\n \"property_id\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"trigger\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"nlpPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"triggers\"\n ],\n \"properties\": {\n \"triggers\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/nlpTrigger\"\n }\n }\n },\n \"additionalProperties\": false\n }\n }\n}\n" - } - ], - "provides": [ - { - "id": "tasknotes.task", - "version": "0.3.0-rc.4", - "digest": "sha256:6948f659df6af05ef95aa893f1d57849032546e8c6cfee8afd5afe566e4ceeb0" - } - ] -} diff --git a/public/contracts/packs/tasknotes.task/0.3.0-rc.15.json b/public/contracts/packs/tasknotes.task/0.3.0-rc.15.json deleted file mode 100644 index 8d504fa..0000000 --- a/public/contracts/packs/tasknotes.task/0.3.0-rc.15.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "manifest": { - "kind": "mdbase.type-pack", - "id": "tasknotes.task", - "version": "0.3.0-rc.15", - "name": "TaskNotes task type pack", - "description": "Portable tasks whose assignments link to person records, with a reviewed, atomic starter upgrade.", - "resources": [ - { - "kind": "contract", - "mode": "managed", - "source": "contracts/tasknotes.task/0.3.0-rc.5.md", - "target": "_contracts/tasknotes.task.md", - "digest": "sha256:ecadd00700e249940f4244aaa5b5985a96557d13340463ec491dfa5e89b032a4" - }, - { - "kind": "type", - "mode": "seed", - "source": "types/tasknotes-task/3.md", - "target": "_types/task.md", - "digest": "sha256:02d1a2a04f26937dd7eec3cde3070dd770c73625e06f386d6214044d176788dd", - "upgrade_from": { - "digest": "sha256:b7f8af7b18d77859dab1f1532c1b55c08c7c39879f55e4ef2a94cb7d2d2284eb", - "document": "---\nkind: mdbase.type\nname: task\nversion: 1\ndescription: A task managed by TaskNotes.\nmatch:\n where:\n tags:\n contains: task\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n type: object\n additionalProperties: true\n properties:\n id:\n type: string\n minLength: 1\n title:\n type: string\n minLength: 1\n status:\n enum: &a2\n - none\n - open\n - in-progress\n - done\n - cancelled\n default: open\n priority:\n enum: &a4\n - none\n - low\n - normal\n - high\n default: normal\n due: &a1\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n scheduled: *a1\n contexts:\n type: array\n items:\n type: string\n projects:\n type: array\n items:\n type: string\n attachments:\n type: array\n items:\n type: string\n minLength: 1\n uniqueItems: true\n timeEstimate:\n type: integer\n minimum: 0\n completedDate:\n type: string\n format: date\n dateCreated:\n type: string\n format: date-time\n dateModified:\n type: string\n format: date-time\n recurrence:\n type: string\n recurrence_anchor:\n enum:\n - scheduled\n - completion\n default: scheduled\n occurrence_materialization:\n enum:\n - manual\n - on_completion\n - rolling\n default: manual\n occurrence_next_trigger:\n enum:\n - completion\n - completion_or_skip\n default: completion\n occurrence_template:\n type: string\n occurrence_past_horizon:\n type: string\n occurrence_future_horizon:\n type: string\n recurrence_parent:\n type: string\n occurrence_date:\n type: string\n format: date\n tags:\n type: array\n items:\n type: string\n timeEntries:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n startTime:\n type: string\n format: date-time\n endTime:\n type: string\n format: date-time\n description:\n type: string\n duration:\n type: integer\n reminders:\n type: array\n items:\n oneOf:\n - type: object\n required:\n - id\n - type\n - absoluteTime\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: absolute\n description:\n type: string\n absoluteTime:\n type: string\n format: date-time\n - type: object\n required:\n - id\n - type\n - relatedTo\n - offset\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: relative\n description:\n type: string\n relatedTo:\n enum:\n - due\n - scheduled\n offset:\n type: string\n blockedBy:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n uid:\n type: string\n reltype:\n type: string\n gap:\n type: string\n required:\n - uid\n complete_instances:\n type: array\n items:\n type: string\n format: date\n skipped_instances:\n type: array\n items:\n type: string\n format: date\n icsEventId:\n type: array\n items:\n type: string\n googleCalendarEventId:\n type: string\n googleCalendarExceptionEventId:\n type: string\n googleCalendarExceptionOriginalScheduled:\n type: string\n format: date\n googleCalendarMovedOriginalDates:\n type: array\n items:\n type: string\n format: date\n tasknotes_manual_order:\n type: string\n allOf:\n - if:\n required:\n - status\n properties:\n status:\n enum: &a3\n - done\n not:\n required:\n - recurrence\n then:\n required:\n - completedDate\n required:\n - title\n - status\n - dateCreated\ncollection:\n read_defaults:\n status: open\n priority: normal\n recurrence_anchor: scheduled\n occurrence_materialization: manual\n occurrence_next_trigger: completion\n links:\n projects[]:\n target_type: any\n validate_exists: false\n attachments[]:\n validate_exists: false\n occurrence_template:\n target_type: any\n validate_exists: false\n recurrence_parent:\n target_type: task\n validate_exists: false\n blockedBy[].uid:\n target_type: task\n validate_exists: false\n path:\n runtime: tasknotes\n template: \"{{zettel}}\"\n folder: tasks\n generated_by: tasknotes.filename.create\n display:\n name_field: title\n unique:\n - field: id\n scope: type\nlifecycle:\n on_create:\n set:\n id:\n uuid: true\n dateCreated:\n now: true\n dateModified:\n now: true\n on_update:\n set:\n dateModified:\n now: true\nimplements:\n - contract: tasknotes.task\n version: 0.3.0-rc.3\n fields:\n id: id\n title: title\n status: status\n priority: priority\n due: due\n scheduled: scheduled\n contexts: contexts\n projects: projects\n attachments: attachments\n timeEstimate: timeEstimate\n completedDate: completedDate\n dateCreated: dateCreated\n dateModified: dateModified\n recurrence: recurrence\n recurrenceAnchor: recurrence_anchor\n occurrenceMaterialization: occurrence_materialization\n occurrenceNextTrigger: occurrence_next_trigger\n occurrenceTemplate: occurrence_template\n occurrencePastHorizon: occurrence_past_horizon\n occurrenceFutureHorizon: occurrence_future_horizon\n recurrenceParent: recurrence_parent\n occurrenceDate: occurrence_date\n tags: tags\n timeEntries: timeEntries\n reminders: reminders\n blockedBy: blockedBy\n completeInstances: complete_instances\n skippedInstances: skipped_instances\n icsEventId: icsEventId\n googleCalendarEventId: googleCalendarEventId\n googleCalendarExceptionEventId: googleCalendarExceptionEventId\n googleCalendarExceptionOriginalScheduled: googleCalendarExceptionOriginalScheduled\n googleCalendarMovedOriginalDates: googleCalendarMovedOriginalDates\n sortOrder: tasknotes_manual_order\n binding:\n profiles:\n - core-lite\n - recurrence\n - materialized-occurrences\n capabilities:\n - dependencies\n - reminders\n - attachments\n - links\n - time-tracking\n - materialized-occurrences\n - archive\n - templating\n title:\n storage: frontmatter\n filename_format: zettel\n status:\n values: *a2\n default: open\n completed_values: *a3\n skipped_values:\n - cancelled\n default_skipped: cancelled\n definitions:\n - value: none\n label: None\n color: \"#94a3b8\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 0\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: open\n label: Open\n color: \"#64748b\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 1\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: in-progress\n label: In progress\n color: \"#3b82f6\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 2\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: done\n label: Done\n color: \"#22c55e\"\n is_completed: true\n is_skipped: false\n exclude_from_cycle: false\n order: 3\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: cancelled\n label: Cancelled\n color: \"#94a3b8\"\n is_completed: false\n is_skipped: true\n exclude_from_cycle: true\n order: 4\n auto_archive: false\n auto_archive_delay_minutes: 5\n priority:\n values: *a4\n default: normal\n definitions:\n - value: none\n label: None\n color: \"#94a3b8\"\n weight: 0\n - value: low\n label: Low\n color: \"#3b82f6\"\n weight: 1\n - value: normal\n label: Normal\n color: \"#f59e0b\"\n weight: 2\n - value: high\n label: High\n color: \"#ef4444\"\n weight: 3\n recurrence:\n syntax: tasknotes\n maintain_due_date_offset: true\n reset_body_checkboxes: false\n occurrences:\n identity_roles:\n - recurrenceParent\n - occurrenceDate\n default_materialization: manual\n default_next_trigger: completion\n past_horizon: P0D\n future_horizon: P14D\n links:\n accepted_formats:\n - wikilink\n - markdown\n write_format: wikilink\n archive:\n archived_tag: archived\n move_on_archive: false\n time_tracking:\n auto_stop_on_complete: false\n templating:\n enabled: false\n occurrence_enabled: false\nx-tasknotes-generator:\n managed_fields:\n - attachments\n - blockedBy\n - complete_instances\n - completedDate\n - contexts\n - dateCreated\n - dateModified\n - due\n - googleCalendarEventId\n - googleCalendarExceptionEventId\n - googleCalendarExceptionOriginalScheduled\n - googleCalendarMovedOriginalDates\n - icsEventId\n - id\n - occurrence_date\n - occurrence_future_horizon\n - occurrence_materialization\n - occurrence_next_trigger\n - occurrence_past_horizon\n - occurrence_template\n - priority\n - projects\n - recurrence\n - recurrence_anchor\n - recurrence_parent\n - reminders\n - scheduled\n - skipped_instances\n - status\n - tags\n - tasknotes_manual_order\n - timeEntries\n - timeEstimate\n - title\n---\n# Task\n\nTask records live under `tasks/`.\n" - } - }, - { - "kind": "schema", - "mode": "managed", - "source": "schemas/tasknotes.task/0.3.0-rc.5.schema.json", - "target": "_schemas/tasknotes/tasknotes-task.schema.json", - "digest": "sha256:aec95578a093be95cbce0fb500964e7aeaeeacc611624fc2893074637dbd4125" - }, - { - "kind": "schema", - "mode": "managed", - "source": "schemas/tasknotes.task.binding/0.3.0-rc.5.schema.json", - "target": "_schemas/tasknotes/tasknotes-task-binding.schema.json", - "digest": "sha256:5b38e8a1c426b7f7fa92d8353fe35dd98e632305cbb15ffccde387473166b267" - } - ] - }, - "resources": [ - { - "source": "contracts/tasknotes.task/0.3.0-rc.5.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: tasknotes.task\nversion: 0.3.0-rc.5\nname: TaskNotes task\ndescription: Portable task data and behavior defined by tasknotes-spec 0.3.0-rc.5.\nrecord_schema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n $id: https://tasknotes.dev/schemas/tasknotes-task.schema.json\n title: TaskNotes portable task view\n description: The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.5 record contract.\n type: object\n required:\n - status\n - dateCreated\n additionalProperties: false\n properties:\n id:\n type: string\n minLength: 1\n title:\n type: string\n minLength: 1\n status:\n type: string\n minLength: 1\n priority:\n type: string\n minLength: 1\n due:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n scheduled:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n contexts:\n type: array\n items:\n type: string\n projects:\n type: array\n items:\n type: string\n assignees:\n type: array\n uniqueItems: true\n items:\n type: string\n minLength: 1\n pattern: \\S\n description: Links to records implementing mdbase.person, such as [[Alex Rivera]]. Implementing types declare this field in collection.links. These references never grant collection access.\n attachments:\n type: array\n uniqueItems: true\n items:\n type: string\n minLength: 1\n timeEstimate:\n type: integer\n minimum: 0\n completedDate:\n type: string\n format: date\n dateCreated:\n type: string\n format: date-time\n dateModified:\n type: string\n format: date-time\n recurrence:\n type: string\n recurrenceAnchor:\n enum:\n - scheduled\n - completion\n recurrenceParent:\n type: string\n occurrenceDate:\n type: string\n format: date\n occurrenceMaterialization:\n enum:\n - manual\n - on_completion\n - rolling\n occurrenceNextTrigger:\n enum:\n - completion\n - completion_or_skip\n occurrenceTemplate:\n type: string\n occurrencePastHorizon:\n type: string\n occurrenceFutureHorizon:\n type: string\n tags:\n type: array\n items:\n type: string\n timeEntries:\n type: array\n items:\n type: object\n reminders:\n type: array\n items:\n type: object\n blockedBy:\n type: array\n items:\n type: object\n completeInstances:\n type: array\n items:\n type: string\n format: date\n skippedInstances:\n type: array\n items:\n type: string\n format: date\n icsEventId:\n type: array\n items:\n type: string\n googleCalendarEventId:\n type: string\n googleCalendarExceptionEventId:\n type: string\n googleCalendarExceptionOriginalScheduled:\n type: string\n format: date\n googleCalendarMovedOriginalDates:\n type: array\n items:\n type: string\n format: date\n sortOrder:\n type: string\nbinding_schema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n $id: https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json\n title: TaskNotes task data-contract binding\n description: Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3.\n type: object\n required:\n - profiles\n - capabilities\n - title\n - status\n - priority\n - recurrence\n - occurrences\n - links\n - archive\n - time_tracking\n - templating\n properties:\n profiles:\n type: array\n minItems: 1\n uniqueItems: true\n items:\n enum:\n - core-lite\n - recurrence\n - templating\n - materialized-occurrences\n - extended\n capabilities:\n type: array\n uniqueItems: true\n items:\n enum:\n - dependencies\n - reminders\n - attachments\n - links\n - time-tracking\n - materialized-occurrences\n - rename\n - archive\n - batch\n - concurrency\n - dry-run\n - migration\n - templating\n title:\n $ref: \"#/$defs/titlePolicy\"\n status:\n $ref: \"#/$defs/statusPolicy\"\n priority:\n $ref: \"#/$defs/priorityPolicy\"\n recurrence:\n $ref: \"#/$defs/recurrencePolicy\"\n occurrences:\n $ref: \"#/$defs/occurrencePolicy\"\n links:\n $ref: \"#/$defs/linkPolicy\"\n archive:\n $ref: \"#/$defs/archivePolicy\"\n time_tracking:\n $ref: \"#/$defs/timeTrackingPolicy\"\n templating:\n $ref: \"#/$defs/templatingPolicy\"\n nlp:\n $ref: \"#/$defs/nlpPolicy\"\n additionalProperties: false\n $defs:\n nonEmptyString:\n type: string\n minLength: 1\n stringSet:\n type: array\n uniqueItems: true\n items:\n $ref: \"#/$defs/nonEmptyString\"\n titlePolicy:\n type: object\n required:\n - storage\n properties:\n storage:\n enum:\n - filename\n - frontmatter\n filename_format:\n enum:\n - title\n - zettel\n - timestamp\n - uuid\n - custom\n custom_filename_template:\n $ref: \"#/$defs/nonEmptyString\"\n allOf:\n - if:\n properties:\n filename_format:\n const: custom\n required:\n - filename_format\n then:\n properties:\n custom_filename_template:\n $ref: \"#/$defs/nonEmptyString\"\n required:\n - custom_filename_template\n additionalProperties: true\n statusDefinition:\n type: object\n required:\n - value\n - label\n - color\n - is_completed\n - is_skipped\n - exclude_from_cycle\n - order\n - auto_archive\n - auto_archive_delay_minutes\n properties:\n value:\n $ref: \"#/$defs/nonEmptyString\"\n label:\n type: string\n color:\n type: string\n icon:\n $ref: \"#/$defs/nonEmptyString\"\n is_completed:\n type: boolean\n is_skipped:\n type: boolean\n exclude_from_cycle:\n type: boolean\n next_status:\n $ref: \"#/$defs/nonEmptyString\"\n order:\n type: number\n auto_archive:\n type: boolean\n auto_archive_delay_minutes:\n type: number\n minimum: 0\n additionalProperties: true\n statusPolicy:\n type: object\n required:\n - values\n - default\n - completed_values\n - definitions\n properties:\n values:\n $ref: \"#/$defs/stringSet\"\n default:\n $ref: \"#/$defs/nonEmptyString\"\n completed_values:\n $ref: \"#/$defs/stringSet\"\n skipped_values:\n $ref: \"#/$defs/stringSet\"\n default_skipped:\n $ref: \"#/$defs/nonEmptyString\"\n definitions:\n type: array\n items:\n $ref: \"#/$defs/statusDefinition\"\n additionalProperties: false\n priorityDefinition:\n type: object\n required:\n - value\n - label\n - color\n - weight\n properties:\n value:\n $ref: \"#/$defs/nonEmptyString\"\n label:\n type: string\n color:\n type: string\n icon:\n $ref: \"#/$defs/nonEmptyString\"\n weight:\n type: number\n additionalProperties: true\n priorityPolicy:\n type: object\n required:\n - values\n - default\n - definitions\n properties:\n values:\n $ref: \"#/$defs/stringSet\"\n default:\n $ref: \"#/$defs/nonEmptyString\"\n definitions:\n type: array\n items:\n $ref: \"#/$defs/priorityDefinition\"\n additionalProperties: false\n recurrencePolicy:\n type: object\n required:\n - syntax\n - maintain_due_date_offset\n - reset_body_checkboxes\n properties:\n syntax:\n const: tasknotes\n maintain_due_date_offset:\n type: boolean\n reset_body_checkboxes:\n type: boolean\n additionalProperties: false\n occurrencePolicy:\n type: object\n required:\n - identity_roles\n - default_materialization\n - default_next_trigger\n properties:\n identity_roles:\n const:\n - recurrenceParent\n - occurrenceDate\n default_materialization:\n enum:\n - manual\n - on_completion\n - rolling\n default_next_trigger:\n enum:\n - completion\n - completion_or_skip\n past_horizon:\n $ref: \"#/$defs/nonEmptyString\"\n future_horizon:\n $ref: \"#/$defs/nonEmptyString\"\n additionalProperties: false\n linkPolicy:\n type: object\n required:\n - accepted_formats\n - write_format\n properties:\n accepted_formats:\n type: array\n minItems: 1\n uniqueItems: true\n items:\n enum:\n - wikilink\n - markdown\n write_format:\n enum:\n - wikilink\n - markdown\n additionalProperties: false\n archivePolicy:\n type: object\n required:\n - archived_tag\n - move_on_archive\n properties:\n archived_tag:\n $ref: \"#/$defs/nonEmptyString\"\n move_on_archive:\n type: boolean\n folder:\n $ref: \"#/$defs/nonEmptyString\"\n additionalProperties: false\n timeTrackingPolicy:\n type: object\n required:\n - auto_stop_on_complete\n properties:\n auto_stop_on_complete:\n type: boolean\n additionalProperties: false\n templatingPolicy:\n type: object\n required:\n - enabled\n - occurrence_enabled\n properties:\n enabled:\n type: boolean\n template_path:\n $ref: \"#/$defs/nonEmptyString\"\n occurrence_enabled:\n type: boolean\n occurrence_template_path:\n $ref: \"#/$defs/nonEmptyString\"\n failure_mode:\n enum:\n - error\n - warning_fallback\n unknown_variable_policy:\n enum:\n - preserve\n - empty\n additionalProperties: false\n nlpTrigger:\n type: object\n required:\n - property_id\n - trigger\n - enabled\n properties:\n property_id:\n $ref: \"#/$defs/nonEmptyString\"\n trigger:\n $ref: \"#/$defs/nonEmptyString\"\n enabled:\n type: boolean\n additionalProperties: false\n nlpPolicy:\n type: object\n required:\n - triggers\n properties:\n triggers:\n type: array\n items:\n $ref: \"#/$defs/nlpTrigger\"\n additionalProperties: false\n---\n\n# TaskNotes task contract\n\nTypes implement this contract through `implements`; applications consume\nthe normalized contract view rather than assuming frontmatter names.\n" - }, - { - "source": "types/tasknotes-task/3.md", - "document": "---\nkind: mdbase.type\nname: task\nversion: 3\ndescription: A task managed by TaskNotes.\nmatch:\n where:\n tags:\n contains: task\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n type: object\n additionalProperties: true\n properties:\n id:\n type: string\n minLength: 1\n title:\n type: string\n minLength: 1\n status:\n enum: &a1\n - none\n - open\n - in-progress\n - done\n default: open\n priority:\n enum: &a3\n - none\n - low\n - normal\n - high\n default: normal\n due:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n scheduled:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n contexts:\n type: array\n items:\n type: string\n projects:\n type: array\n items:\n type: string\n assignees:\n type: array\n items:\n type: string\n minLength: 1\n pattern: \\S\n uniqueItems: true\n attachments:\n type: array\n items:\n type: string\n minLength: 1\n uniqueItems: true\n timeEstimate:\n type: integer\n minimum: 0\n completedDate:\n type: string\n format: date\n dateCreated:\n type: string\n format: date-time\n dateModified:\n type: string\n format: date-time\n recurrence:\n type: string\n recurrence_anchor:\n enum:\n - scheduled\n - completion\n default: scheduled\n occurrence_materialization:\n enum:\n - manual\n - on_completion\n - rolling\n default: manual\n occurrence_next_trigger:\n enum:\n - completion\n - completion_or_skip\n default: completion\n occurrence_template:\n type: string\n occurrence_past_horizon:\n type: string\n occurrence_future_horizon:\n type: string\n recurrence_parent:\n type: string\n occurrence_date:\n type: string\n format: date\n tags:\n type: array\n items:\n type: string\n timeEntries:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n startTime:\n type: string\n format: date-time\n endTime:\n type: string\n format: date-time\n description:\n type: string\n duration:\n type: integer\n reminders:\n type: array\n items:\n oneOf:\n - type: object\n required:\n - id\n - type\n - absoluteTime\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: absolute\n description:\n type: string\n absoluteTime:\n type: string\n format: date-time\n - type: object\n required:\n - id\n - type\n - relatedTo\n - offset\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: relative\n description:\n type: string\n relatedTo:\n enum:\n - due\n - scheduled\n offset:\n type: string\n blockedBy:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n uid:\n type: string\n reltype:\n type: string\n gap:\n type: string\n required:\n - uid\n complete_instances:\n type: array\n items:\n type: string\n format: date\n skipped_instances:\n type: array\n items:\n type: string\n format: date\n icsEventId:\n type: array\n items:\n type: string\n googleCalendarEventId:\n type: string\n googleCalendarExceptionEventId:\n type: string\n googleCalendarExceptionOriginalScheduled:\n type: string\n format: date\n googleCalendarMovedOriginalDates:\n type: array\n items:\n type: string\n format: date\n tasknotes_manual_order:\n type: string\n allOf:\n - if:\n required:\n - status\n properties:\n status:\n enum: &a2\n - done\n not:\n required:\n - recurrence\n then:\n required:\n - completedDate\n required:\n - title\n - status\n - dateCreated\ncollection:\n read_defaults:\n status: open\n priority: normal\n recurrence_anchor: scheduled\n occurrence_materialization: manual\n occurrence_next_trigger: completion\n links:\n projects[]:\n target_type: any\n validate_exists: false\n assignees[]:\n validate_exists: false\n attachments[]:\n validate_exists: false\n occurrence_template:\n target_type: any\n validate_exists: false\n recurrence_parent:\n target_type: task\n validate_exists: false\n blockedBy[].uid:\n target_type: task\n validate_exists: false\n path:\n runtime: tasknotes\n template: \"{{zettel}}\"\n folder: tasks\n generated_by: tasknotes.filename.create\n display:\n name_field: title\n unique:\n - field: id\n scope: type\nlifecycle:\n on_create:\n set:\n id:\n uuid: true\n dateCreated:\n now: true\n dateModified:\n now: true\n on_update:\n set:\n dateModified:\n now: true\nimplements:\n - contract: tasknotes.task\n version: 0.3.0-rc.5\n fields:\n id: id\n title: title\n status: status\n priority: priority\n due: due\n scheduled: scheduled\n contexts: contexts\n projects: projects\n assignees: assignees\n attachments: attachments\n timeEstimate: timeEstimate\n completedDate: completedDate\n dateCreated: dateCreated\n dateModified: dateModified\n recurrence: recurrence\n recurrenceAnchor: recurrence_anchor\n occurrenceMaterialization: occurrence_materialization\n occurrenceNextTrigger: occurrence_next_trigger\n occurrenceTemplate: occurrence_template\n occurrencePastHorizon: occurrence_past_horizon\n occurrenceFutureHorizon: occurrence_future_horizon\n recurrenceParent: recurrence_parent\n occurrenceDate: occurrence_date\n tags: tags\n timeEntries: timeEntries\n reminders: reminders\n blockedBy: blockedBy\n completeInstances: complete_instances\n skippedInstances: skipped_instances\n icsEventId: icsEventId\n googleCalendarEventId: googleCalendarEventId\n googleCalendarExceptionEventId: googleCalendarExceptionEventId\n googleCalendarExceptionOriginalScheduled: googleCalendarExceptionOriginalScheduled\n googleCalendarMovedOriginalDates: googleCalendarMovedOriginalDates\n sortOrder: tasknotes_manual_order\n binding:\n profiles:\n - core-lite\n - recurrence\n - templating\n - materialized-occurrences\n - extended\n capabilities:\n - dependencies\n - reminders\n - attachments\n - links\n - time-tracking\n - materialized-occurrences\n - archive\n - templating\n title:\n storage: frontmatter\n filename_format: zettel\n status:\n values: *a1\n default: open\n completed_values: *a2\n skipped_values: []\n definitions:\n - value: none\n label: None\n color: \"#cccccc\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 0\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: open\n label: Open\n color: \"#808080\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 1\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: in-progress\n label: In progress\n color: \"#0066cc\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 2\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: done\n label: Done\n color: \"#00aa00\"\n is_completed: true\n is_skipped: false\n exclude_from_cycle: false\n order: 3\n auto_archive: false\n auto_archive_delay_minutes: 5\n priority:\n values: *a3\n default: normal\n definitions:\n - value: none\n label: None\n color: \"#cccccc\"\n weight: 0\n - value: low\n label: Low\n color: \"#00aa00\"\n weight: 1\n - value: normal\n label: Normal\n color: \"#ffaa00\"\n weight: 2\n - value: high\n label: High\n color: \"#ff0000\"\n weight: 3\n recurrence:\n syntax: tasknotes\n maintain_due_date_offset: true\n reset_body_checkboxes: false\n occurrences:\n identity_roles:\n - recurrenceParent\n - occurrenceDate\n default_materialization: manual\n default_next_trigger: completion\n past_horizon: P0D\n future_horizon: P14D\n links:\n accepted_formats:\n - wikilink\n - markdown\n write_format: wikilink\n archive:\n archived_tag: archived\n move_on_archive: false\n time_tracking:\n auto_stop_on_complete: false\n templating:\n enabled: false\n occurrence_enabled: false\nx-tasknotes-generator:\n managed_fields:\n - assignees\n - attachments\n - blockedBy\n - complete_instances\n - completedDate\n - contexts\n - dateCreated\n - dateModified\n - due\n - googleCalendarEventId\n - googleCalendarExceptionEventId\n - googleCalendarExceptionOriginalScheduled\n - googleCalendarMovedOriginalDates\n - icsEventId\n - id\n - occurrence_date\n - occurrence_future_horizon\n - occurrence_materialization\n - occurrence_next_trigger\n - occurrence_past_horizon\n - occurrence_template\n - priority\n - projects\n - recurrence\n - recurrence_anchor\n - recurrence_parent\n - reminders\n - scheduled\n - skipped_instances\n - status\n - tags\n - tasknotes_manual_order\n - timeEntries\n - timeEstimate\n - title\n---\n\n# Task\n\nThis type definition implements the TaskNotes contract for this mdbase collection.\nIts JSON Schema describes persisted task frontmatter; collection and lifecycle\nmetadata describe generic mdbase behavior; `implements` maps the portable\nTaskNotes task view and supplies TaskNotes behavior.\n\nChanges made here are loaded by TaskNotes. Portable changes made in TaskNotes\nsettings are written back while unknown extensions are preserved.\n" - }, - { - "source": "schemas/tasknotes.task/0.3.0-rc.5.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://tasknotes.dev/schemas/tasknotes-task.schema.json\",\n \"title\": \"TaskNotes portable task view\",\n \"description\": \"The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.5 record contract.\",\n \"type\": \"object\",\n \"required\": [\n \"status\",\n \"dateCreated\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"title\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"status\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"priority\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"due\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n ]\n },\n \"scheduled\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n ]\n },\n \"contexts\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"projects\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"assignees\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"pattern\": \"\\\\S\"\n },\n \"description\": \"Links to records implementing mdbase.person, such as [[Alex Rivera]]. Implementing types declare this field in collection.links. These references never grant collection access.\"\n },\n \"attachments\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"timeEstimate\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"completedDate\": {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n \"dateCreated\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"dateModified\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"recurrence\": {\n \"type\": \"string\"\n },\n \"recurrenceAnchor\": {\n \"enum\": [\n \"scheduled\",\n \"completion\"\n ]\n },\n \"recurrenceParent\": {\n \"type\": \"string\"\n },\n \"occurrenceDate\": {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n \"occurrenceMaterialization\": {\n \"enum\": [\n \"manual\",\n \"on_completion\",\n \"rolling\"\n ]\n },\n \"occurrenceNextTrigger\": {\n \"enum\": [\n \"completion\",\n \"completion_or_skip\"\n ]\n },\n \"occurrenceTemplate\": {\n \"type\": \"string\"\n },\n \"occurrencePastHorizon\": {\n \"type\": \"string\"\n },\n \"occurrenceFutureHorizon\": {\n \"type\": \"string\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"timeEntries\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"reminders\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"blockedBy\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"completeInstances\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"date\"\n }\n },\n \"skippedInstances\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"date\"\n }\n },\n \"icsEventId\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"googleCalendarEventId\": {\n \"type\": \"string\"\n },\n \"googleCalendarExceptionEventId\": {\n \"type\": \"string\"\n },\n \"googleCalendarExceptionOriginalScheduled\": {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n \"googleCalendarMovedOriginalDates\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"date\"\n }\n },\n \"sortOrder\": {\n \"type\": \"string\"\n }\n }\n}\n" - }, - { - "source": "schemas/tasknotes.task.binding/0.3.0-rc.5.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json\",\n \"title\": \"TaskNotes task data-contract binding\",\n \"description\": \"Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3.\",\n \"type\": \"object\",\n \"required\": [\n \"profiles\",\n \"capabilities\",\n \"title\",\n \"status\",\n \"priority\",\n \"recurrence\",\n \"occurrences\",\n \"links\",\n \"archive\",\n \"time_tracking\",\n \"templating\"\n ],\n \"properties\": {\n \"profiles\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"core-lite\",\n \"recurrence\",\n \"templating\",\n \"materialized-occurrences\",\n \"extended\"\n ]\n }\n },\n \"capabilities\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"dependencies\",\n \"reminders\",\n \"attachments\",\n \"links\",\n \"time-tracking\",\n \"materialized-occurrences\",\n \"rename\",\n \"archive\",\n \"batch\",\n \"concurrency\",\n \"dry-run\",\n \"migration\",\n \"templating\"\n ]\n }\n },\n \"title\": {\n \"$ref\": \"#/$defs/titlePolicy\"\n },\n \"status\": {\n \"$ref\": \"#/$defs/statusPolicy\"\n },\n \"priority\": {\n \"$ref\": \"#/$defs/priorityPolicy\"\n },\n \"recurrence\": {\n \"$ref\": \"#/$defs/recurrencePolicy\"\n },\n \"occurrences\": {\n \"$ref\": \"#/$defs/occurrencePolicy\"\n },\n \"links\": {\n \"$ref\": \"#/$defs/linkPolicy\"\n },\n \"archive\": {\n \"$ref\": \"#/$defs/archivePolicy\"\n },\n \"time_tracking\": {\n \"$ref\": \"#/$defs/timeTrackingPolicy\"\n },\n \"templating\": {\n \"$ref\": \"#/$defs/templatingPolicy\"\n },\n \"nlp\": {\n \"$ref\": \"#/$defs/nlpPolicy\"\n }\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"nonEmptyString\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"stringSet\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"titlePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"storage\"\n ],\n \"properties\": {\n \"storage\": {\n \"enum\": [\n \"filename\",\n \"frontmatter\"\n ]\n },\n \"filename_format\": {\n \"enum\": [\n \"title\",\n \"zettel\",\n \"timestamp\",\n \"uuid\",\n \"custom\"\n ]\n },\n \"custom_filename_template\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": {\n \"filename_format\": {\n \"const\": \"custom\"\n }\n },\n \"required\": [\n \"filename_format\"\n ]\n },\n \"then\": {\n \"properties\": {\n \"custom_filename_template\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"required\": [\n \"custom_filename_template\"\n ]\n }\n }\n ],\n \"additionalProperties\": true\n },\n \"statusDefinition\": {\n \"type\": \"object\",\n \"required\": [\n \"value\",\n \"label\",\n \"color\",\n \"is_completed\",\n \"is_skipped\",\n \"exclude_from_cycle\",\n \"order\",\n \"auto_archive\",\n \"auto_archive_delay_minutes\"\n ],\n \"properties\": {\n \"value\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"is_completed\": {\n \"type\": \"boolean\"\n },\n \"is_skipped\": {\n \"type\": \"boolean\"\n },\n \"exclude_from_cycle\": {\n \"type\": \"boolean\"\n },\n \"next_status\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"order\": {\n \"type\": \"number\"\n },\n \"auto_archive\": {\n \"type\": \"boolean\"\n },\n \"auto_archive_delay_minutes\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n },\n \"additionalProperties\": true\n },\n \"statusPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"values\",\n \"default\",\n \"completed_values\",\n \"definitions\"\n ],\n \"properties\": {\n \"values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"default\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"completed_values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"skipped_values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"default_skipped\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"definitions\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/statusDefinition\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"priorityDefinition\": {\n \"type\": \"object\",\n \"required\": [\n \"value\",\n \"label\",\n \"color\",\n \"weight\"\n ],\n \"properties\": {\n \"value\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"weight\": {\n \"type\": \"number\"\n }\n },\n \"additionalProperties\": true\n },\n \"priorityPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"values\",\n \"default\",\n \"definitions\"\n ],\n \"properties\": {\n \"values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"default\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"definitions\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/priorityDefinition\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"recurrencePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"syntax\",\n \"maintain_due_date_offset\",\n \"reset_body_checkboxes\"\n ],\n \"properties\": {\n \"syntax\": {\n \"const\": \"tasknotes\"\n },\n \"maintain_due_date_offset\": {\n \"type\": \"boolean\"\n },\n \"reset_body_checkboxes\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"occurrencePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"identity_roles\",\n \"default_materialization\",\n \"default_next_trigger\"\n ],\n \"properties\": {\n \"identity_roles\": {\n \"const\": [\n \"recurrenceParent\",\n \"occurrenceDate\"\n ]\n },\n \"default_materialization\": {\n \"enum\": [\n \"manual\",\n \"on_completion\",\n \"rolling\"\n ]\n },\n \"default_next_trigger\": {\n \"enum\": [\n \"completion\",\n \"completion_or_skip\"\n ]\n },\n \"past_horizon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"future_horizon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"additionalProperties\": false\n },\n \"linkPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"accepted_formats\",\n \"write_format\"\n ],\n \"properties\": {\n \"accepted_formats\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"wikilink\",\n \"markdown\"\n ]\n }\n },\n \"write_format\": {\n \"enum\": [\n \"wikilink\",\n \"markdown\"\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"archivePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"archived_tag\",\n \"move_on_archive\"\n ],\n \"properties\": {\n \"archived_tag\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"move_on_archive\": {\n \"type\": \"boolean\"\n },\n \"folder\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"additionalProperties\": false\n },\n \"timeTrackingPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"auto_stop_on_complete\"\n ],\n \"properties\": {\n \"auto_stop_on_complete\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"templatingPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"enabled\",\n \"occurrence_enabled\"\n ],\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"template_path\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"occurrence_enabled\": {\n \"type\": \"boolean\"\n },\n \"occurrence_template_path\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"failure_mode\": {\n \"enum\": [\n \"error\",\n \"warning_fallback\"\n ]\n },\n \"unknown_variable_policy\": {\n \"enum\": [\n \"preserve\",\n \"empty\"\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"nlpTrigger\": {\n \"type\": \"object\",\n \"required\": [\n \"property_id\",\n \"trigger\",\n \"enabled\"\n ],\n \"properties\": {\n \"property_id\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"trigger\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"nlpPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"triggers\"\n ],\n \"properties\": {\n \"triggers\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/nlpTrigger\"\n }\n }\n },\n \"additionalProperties\": false\n }\n }\n}\n" - } - ], - "provides": [ - { - "id": "tasknotes.task", - "version": "0.3.0-rc.5", - "digest": "sha256:dde71d0d776aa0069ee627fe3c10b1a20f87ba36929a16790598ebfb4e8ebf04" - } - ] -} diff --git a/public/contracts/packs/tasknotes.task/0.3.0-rc.16.json b/public/contracts/packs/tasknotes.task/0.3.0-rc.16.json deleted file mode 100644 index f1db263..0000000 --- a/public/contracts/packs/tasknotes.task/0.3.0-rc.16.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "manifest": { - "kind": "mdbase.type-pack", - "id": "tasknotes.task", - "version": "0.3.0-rc.16", - "name": "TaskNotes task type pack", - "description": "Portable tasks whose assignments link to person records, with a reviewed, atomic starter upgrade.", - "resources": [ - { - "kind": "contract", - "mode": "managed", - "source": "contracts/tasknotes.task/0.3.0-rc.5.md", - "target": "_contracts/tasknotes.task.md", - "digest": "sha256:ecadd00700e249940f4244aaa5b5985a96557d13340463ec491dfa5e89b032a4" - }, - { - "kind": "type", - "mode": "seed", - "source": "types/tasknotes-task/4.md", - "target": "_types/task.md", - "digest": "sha256:2b6016c3543c0dfff491cc6262aed3afd4d672360484174042a261acd1d8ff5f", - "upgrade_from": { - "digest": "sha256:b7f8af7b18d77859dab1f1532c1b55c08c7c39879f55e4ef2a94cb7d2d2284eb", - "document": "---\nkind: mdbase.type\nname: task\nversion: 1\ndescription: A task managed by TaskNotes.\nmatch:\n where:\n tags:\n contains: task\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n type: object\n additionalProperties: true\n properties:\n id:\n type: string\n minLength: 1\n title:\n type: string\n minLength: 1\n status:\n enum: &a2\n - none\n - open\n - in-progress\n - done\n - cancelled\n default: open\n priority:\n enum: &a4\n - none\n - low\n - normal\n - high\n default: normal\n due: &a1\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n scheduled: *a1\n contexts:\n type: array\n items:\n type: string\n projects:\n type: array\n items:\n type: string\n attachments:\n type: array\n items:\n type: string\n minLength: 1\n uniqueItems: true\n timeEstimate:\n type: integer\n minimum: 0\n completedDate:\n type: string\n format: date\n dateCreated:\n type: string\n format: date-time\n dateModified:\n type: string\n format: date-time\n recurrence:\n type: string\n recurrence_anchor:\n enum:\n - scheduled\n - completion\n default: scheduled\n occurrence_materialization:\n enum:\n - manual\n - on_completion\n - rolling\n default: manual\n occurrence_next_trigger:\n enum:\n - completion\n - completion_or_skip\n default: completion\n occurrence_template:\n type: string\n occurrence_past_horizon:\n type: string\n occurrence_future_horizon:\n type: string\n recurrence_parent:\n type: string\n occurrence_date:\n type: string\n format: date\n tags:\n type: array\n items:\n type: string\n timeEntries:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n startTime:\n type: string\n format: date-time\n endTime:\n type: string\n format: date-time\n description:\n type: string\n duration:\n type: integer\n reminders:\n type: array\n items:\n oneOf:\n - type: object\n required:\n - id\n - type\n - absoluteTime\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: absolute\n description:\n type: string\n absoluteTime:\n type: string\n format: date-time\n - type: object\n required:\n - id\n - type\n - relatedTo\n - offset\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: relative\n description:\n type: string\n relatedTo:\n enum:\n - due\n - scheduled\n offset:\n type: string\n blockedBy:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n uid:\n type: string\n reltype:\n type: string\n gap:\n type: string\n required:\n - uid\n complete_instances:\n type: array\n items:\n type: string\n format: date\n skipped_instances:\n type: array\n items:\n type: string\n format: date\n icsEventId:\n type: array\n items:\n type: string\n googleCalendarEventId:\n type: string\n googleCalendarExceptionEventId:\n type: string\n googleCalendarExceptionOriginalScheduled:\n type: string\n format: date\n googleCalendarMovedOriginalDates:\n type: array\n items:\n type: string\n format: date\n tasknotes_manual_order:\n type: string\n allOf:\n - if:\n required:\n - status\n properties:\n status:\n enum: &a3\n - done\n not:\n required:\n - recurrence\n then:\n required:\n - completedDate\n required:\n - title\n - status\n - dateCreated\ncollection:\n read_defaults:\n status: open\n priority: normal\n recurrence_anchor: scheduled\n occurrence_materialization: manual\n occurrence_next_trigger: completion\n links:\n projects[]:\n target_type: any\n validate_exists: false\n attachments[]:\n validate_exists: false\n occurrence_template:\n target_type: any\n validate_exists: false\n recurrence_parent:\n target_type: task\n validate_exists: false\n blockedBy[].uid:\n target_type: task\n validate_exists: false\n path:\n runtime: tasknotes\n template: \"{{zettel}}\"\n folder: tasks\n generated_by: tasknotes.filename.create\n display:\n name_field: title\n unique:\n - field: id\n scope: type\nlifecycle:\n on_create:\n set:\n id:\n uuid: true\n dateCreated:\n now: true\n dateModified:\n now: true\n on_update:\n set:\n dateModified:\n now: true\nimplements:\n - contract: tasknotes.task\n version: 0.3.0-rc.3\n fields:\n id: id\n title: title\n status: status\n priority: priority\n due: due\n scheduled: scheduled\n contexts: contexts\n projects: projects\n attachments: attachments\n timeEstimate: timeEstimate\n completedDate: completedDate\n dateCreated: dateCreated\n dateModified: dateModified\n recurrence: recurrence\n recurrenceAnchor: recurrence_anchor\n occurrenceMaterialization: occurrence_materialization\n occurrenceNextTrigger: occurrence_next_trigger\n occurrenceTemplate: occurrence_template\n occurrencePastHorizon: occurrence_past_horizon\n occurrenceFutureHorizon: occurrence_future_horizon\n recurrenceParent: recurrence_parent\n occurrenceDate: occurrence_date\n tags: tags\n timeEntries: timeEntries\n reminders: reminders\n blockedBy: blockedBy\n completeInstances: complete_instances\n skippedInstances: skipped_instances\n icsEventId: icsEventId\n googleCalendarEventId: googleCalendarEventId\n googleCalendarExceptionEventId: googleCalendarExceptionEventId\n googleCalendarExceptionOriginalScheduled: googleCalendarExceptionOriginalScheduled\n googleCalendarMovedOriginalDates: googleCalendarMovedOriginalDates\n sortOrder: tasknotes_manual_order\n binding:\n profiles:\n - core-lite\n - recurrence\n - materialized-occurrences\n capabilities:\n - dependencies\n - reminders\n - attachments\n - links\n - time-tracking\n - materialized-occurrences\n - archive\n - templating\n title:\n storage: frontmatter\n filename_format: zettel\n status:\n values: *a2\n default: open\n completed_values: *a3\n skipped_values:\n - cancelled\n default_skipped: cancelled\n definitions:\n - value: none\n label: None\n color: \"#94a3b8\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 0\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: open\n label: Open\n color: \"#64748b\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 1\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: in-progress\n label: In progress\n color: \"#3b82f6\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 2\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: done\n label: Done\n color: \"#22c55e\"\n is_completed: true\n is_skipped: false\n exclude_from_cycle: false\n order: 3\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: cancelled\n label: Cancelled\n color: \"#94a3b8\"\n is_completed: false\n is_skipped: true\n exclude_from_cycle: true\n order: 4\n auto_archive: false\n auto_archive_delay_minutes: 5\n priority:\n values: *a4\n default: normal\n definitions:\n - value: none\n label: None\n color: \"#94a3b8\"\n weight: 0\n - value: low\n label: Low\n color: \"#3b82f6\"\n weight: 1\n - value: normal\n label: Normal\n color: \"#f59e0b\"\n weight: 2\n - value: high\n label: High\n color: \"#ef4444\"\n weight: 3\n recurrence:\n syntax: tasknotes\n maintain_due_date_offset: true\n reset_body_checkboxes: false\n occurrences:\n identity_roles:\n - recurrenceParent\n - occurrenceDate\n default_materialization: manual\n default_next_trigger: completion\n past_horizon: P0D\n future_horizon: P14D\n links:\n accepted_formats:\n - wikilink\n - markdown\n write_format: wikilink\n archive:\n archived_tag: archived\n move_on_archive: false\n time_tracking:\n auto_stop_on_complete: false\n templating:\n enabled: false\n occurrence_enabled: false\nx-tasknotes-generator:\n managed_fields:\n - attachments\n - blockedBy\n - complete_instances\n - completedDate\n - contexts\n - dateCreated\n - dateModified\n - due\n - googleCalendarEventId\n - googleCalendarExceptionEventId\n - googleCalendarExceptionOriginalScheduled\n - googleCalendarMovedOriginalDates\n - icsEventId\n - id\n - occurrence_date\n - occurrence_future_horizon\n - occurrence_materialization\n - occurrence_next_trigger\n - occurrence_past_horizon\n - occurrence_template\n - priority\n - projects\n - recurrence\n - recurrence_anchor\n - recurrence_parent\n - reminders\n - scheduled\n - skipped_instances\n - status\n - tags\n - tasknotes_manual_order\n - timeEntries\n - timeEstimate\n - title\n---\n# Task\n\nTask records live under `tasks/`.\n" - } - }, - { - "kind": "schema", - "mode": "managed", - "source": "schemas/tasknotes.task/0.3.0-rc.5.schema.json", - "target": "_schemas/tasknotes/tasknotes-task.schema.json", - "digest": "sha256:aec95578a093be95cbce0fb500964e7aeaeeacc611624fc2893074637dbd4125" - }, - { - "kind": "schema", - "mode": "managed", - "source": "schemas/tasknotes.task.binding/0.3.0-rc.5.schema.json", - "target": "_schemas/tasknotes/tasknotes-task-binding.schema.json", - "digest": "sha256:5b38e8a1c426b7f7fa92d8353fe35dd98e632305cbb15ffccde387473166b267" - } - ] - }, - "resources": [ - { - "source": "contracts/tasknotes.task/0.3.0-rc.5.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: tasknotes.task\nversion: 0.3.0-rc.5\nname: TaskNotes task\ndescription: Portable task data and behavior defined by tasknotes-spec 0.3.0-rc.5.\nrecord_schema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n $id: https://tasknotes.dev/schemas/tasknotes-task.schema.json\n title: TaskNotes portable task view\n description: The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.5 record contract.\n type: object\n required:\n - status\n - dateCreated\n additionalProperties: false\n properties:\n id:\n type: string\n minLength: 1\n title:\n type: string\n minLength: 1\n status:\n type: string\n minLength: 1\n priority:\n type: string\n minLength: 1\n due:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n scheduled:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n contexts:\n type: array\n items:\n type: string\n projects:\n type: array\n items:\n type: string\n assignees:\n type: array\n uniqueItems: true\n items:\n type: string\n minLength: 1\n pattern: \\S\n description: Links to records implementing mdbase.person, such as [[Alex Rivera]]. Implementing types declare this field in collection.links. These references never grant collection access.\n attachments:\n type: array\n uniqueItems: true\n items:\n type: string\n minLength: 1\n timeEstimate:\n type: integer\n minimum: 0\n completedDate:\n type: string\n format: date\n dateCreated:\n type: string\n format: date-time\n dateModified:\n type: string\n format: date-time\n recurrence:\n type: string\n recurrenceAnchor:\n enum:\n - scheduled\n - completion\n recurrenceParent:\n type: string\n occurrenceDate:\n type: string\n format: date\n occurrenceMaterialization:\n enum:\n - manual\n - on_completion\n - rolling\n occurrenceNextTrigger:\n enum:\n - completion\n - completion_or_skip\n occurrenceTemplate:\n type: string\n occurrencePastHorizon:\n type: string\n occurrenceFutureHorizon:\n type: string\n tags:\n type: array\n items:\n type: string\n timeEntries:\n type: array\n items:\n type: object\n reminders:\n type: array\n items:\n type: object\n blockedBy:\n type: array\n items:\n type: object\n completeInstances:\n type: array\n items:\n type: string\n format: date\n skippedInstances:\n type: array\n items:\n type: string\n format: date\n icsEventId:\n type: array\n items:\n type: string\n googleCalendarEventId:\n type: string\n googleCalendarExceptionEventId:\n type: string\n googleCalendarExceptionOriginalScheduled:\n type: string\n format: date\n googleCalendarMovedOriginalDates:\n type: array\n items:\n type: string\n format: date\n sortOrder:\n type: string\nbinding_schema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n $id: https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json\n title: TaskNotes task data-contract binding\n description: Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3.\n type: object\n required:\n - profiles\n - capabilities\n - title\n - status\n - priority\n - recurrence\n - occurrences\n - links\n - archive\n - time_tracking\n - templating\n properties:\n profiles:\n type: array\n minItems: 1\n uniqueItems: true\n items:\n enum:\n - core-lite\n - recurrence\n - templating\n - materialized-occurrences\n - extended\n capabilities:\n type: array\n uniqueItems: true\n items:\n enum:\n - dependencies\n - reminders\n - attachments\n - links\n - time-tracking\n - materialized-occurrences\n - rename\n - archive\n - batch\n - concurrency\n - dry-run\n - migration\n - templating\n title:\n $ref: \"#/$defs/titlePolicy\"\n status:\n $ref: \"#/$defs/statusPolicy\"\n priority:\n $ref: \"#/$defs/priorityPolicy\"\n recurrence:\n $ref: \"#/$defs/recurrencePolicy\"\n occurrences:\n $ref: \"#/$defs/occurrencePolicy\"\n links:\n $ref: \"#/$defs/linkPolicy\"\n archive:\n $ref: \"#/$defs/archivePolicy\"\n time_tracking:\n $ref: \"#/$defs/timeTrackingPolicy\"\n templating:\n $ref: \"#/$defs/templatingPolicy\"\n nlp:\n $ref: \"#/$defs/nlpPolicy\"\n additionalProperties: false\n $defs:\n nonEmptyString:\n type: string\n minLength: 1\n stringSet:\n type: array\n uniqueItems: true\n items:\n $ref: \"#/$defs/nonEmptyString\"\n titlePolicy:\n type: object\n required:\n - storage\n properties:\n storage:\n enum:\n - filename\n - frontmatter\n filename_format:\n enum:\n - title\n - zettel\n - timestamp\n - uuid\n - custom\n custom_filename_template:\n $ref: \"#/$defs/nonEmptyString\"\n allOf:\n - if:\n properties:\n filename_format:\n const: custom\n required:\n - filename_format\n then:\n properties:\n custom_filename_template:\n $ref: \"#/$defs/nonEmptyString\"\n required:\n - custom_filename_template\n additionalProperties: true\n statusDefinition:\n type: object\n required:\n - value\n - label\n - color\n - is_completed\n - is_skipped\n - exclude_from_cycle\n - order\n - auto_archive\n - auto_archive_delay_minutes\n properties:\n value:\n $ref: \"#/$defs/nonEmptyString\"\n label:\n type: string\n color:\n type: string\n icon:\n $ref: \"#/$defs/nonEmptyString\"\n is_completed:\n type: boolean\n is_skipped:\n type: boolean\n exclude_from_cycle:\n type: boolean\n next_status:\n $ref: \"#/$defs/nonEmptyString\"\n order:\n type: number\n auto_archive:\n type: boolean\n auto_archive_delay_minutes:\n type: number\n minimum: 0\n additionalProperties: true\n statusPolicy:\n type: object\n required:\n - values\n - default\n - completed_values\n - definitions\n properties:\n values:\n $ref: \"#/$defs/stringSet\"\n default:\n $ref: \"#/$defs/nonEmptyString\"\n completed_values:\n $ref: \"#/$defs/stringSet\"\n skipped_values:\n $ref: \"#/$defs/stringSet\"\n default_skipped:\n $ref: \"#/$defs/nonEmptyString\"\n definitions:\n type: array\n items:\n $ref: \"#/$defs/statusDefinition\"\n additionalProperties: false\n priorityDefinition:\n type: object\n required:\n - value\n - label\n - color\n - weight\n properties:\n value:\n $ref: \"#/$defs/nonEmptyString\"\n label:\n type: string\n color:\n type: string\n icon:\n $ref: \"#/$defs/nonEmptyString\"\n weight:\n type: number\n additionalProperties: true\n priorityPolicy:\n type: object\n required:\n - values\n - default\n - definitions\n properties:\n values:\n $ref: \"#/$defs/stringSet\"\n default:\n $ref: \"#/$defs/nonEmptyString\"\n definitions:\n type: array\n items:\n $ref: \"#/$defs/priorityDefinition\"\n additionalProperties: false\n recurrencePolicy:\n type: object\n required:\n - syntax\n - maintain_due_date_offset\n - reset_body_checkboxes\n properties:\n syntax:\n const: tasknotes\n maintain_due_date_offset:\n type: boolean\n reset_body_checkboxes:\n type: boolean\n additionalProperties: false\n occurrencePolicy:\n type: object\n required:\n - identity_roles\n - default_materialization\n - default_next_trigger\n properties:\n identity_roles:\n const:\n - recurrenceParent\n - occurrenceDate\n default_materialization:\n enum:\n - manual\n - on_completion\n - rolling\n default_next_trigger:\n enum:\n - completion\n - completion_or_skip\n past_horizon:\n $ref: \"#/$defs/nonEmptyString\"\n future_horizon:\n $ref: \"#/$defs/nonEmptyString\"\n additionalProperties: false\n linkPolicy:\n type: object\n required:\n - accepted_formats\n - write_format\n properties:\n accepted_formats:\n type: array\n minItems: 1\n uniqueItems: true\n items:\n enum:\n - wikilink\n - markdown\n write_format:\n enum:\n - wikilink\n - markdown\n additionalProperties: false\n archivePolicy:\n type: object\n required:\n - archived_tag\n - move_on_archive\n properties:\n archived_tag:\n $ref: \"#/$defs/nonEmptyString\"\n move_on_archive:\n type: boolean\n folder:\n $ref: \"#/$defs/nonEmptyString\"\n additionalProperties: false\n timeTrackingPolicy:\n type: object\n required:\n - auto_stop_on_complete\n properties:\n auto_stop_on_complete:\n type: boolean\n additionalProperties: false\n templatingPolicy:\n type: object\n required:\n - enabled\n - occurrence_enabled\n properties:\n enabled:\n type: boolean\n template_path:\n $ref: \"#/$defs/nonEmptyString\"\n occurrence_enabled:\n type: boolean\n occurrence_template_path:\n $ref: \"#/$defs/nonEmptyString\"\n failure_mode:\n enum:\n - error\n - warning_fallback\n unknown_variable_policy:\n enum:\n - preserve\n - empty\n additionalProperties: false\n nlpTrigger:\n type: object\n required:\n - property_id\n - trigger\n - enabled\n properties:\n property_id:\n $ref: \"#/$defs/nonEmptyString\"\n trigger:\n $ref: \"#/$defs/nonEmptyString\"\n enabled:\n type: boolean\n additionalProperties: false\n nlpPolicy:\n type: object\n required:\n - triggers\n properties:\n triggers:\n type: array\n items:\n $ref: \"#/$defs/nlpTrigger\"\n additionalProperties: false\n---\n\n# TaskNotes task contract\n\nTypes implement this contract through `implements`; applications consume\nthe normalized contract view rather than assuming frontmatter names.\n" - }, - { - "source": "types/tasknotes-task/4.md", - "document": "---\nkind: mdbase.type\nname: task\nversion: 4\ndescription: A task managed by TaskNotes.\nmatch:\n where:\n tags:\n contains: task\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n type: object\n additionalProperties: true\n properties:\n id:\n type: string\n minLength: 1\n title:\n type: string\n minLength: 1\n status:\n enum: &a2\n - none\n - open\n - in-progress\n - done\n - cancelled\n default: open\n priority:\n enum: &a4\n - none\n - low\n - normal\n - high\n default: normal\n due: &a1\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n scheduled: *a1\n contexts:\n type: array\n items:\n type: string\n projects:\n type: array\n items:\n type: string\n assignees:\n type: array\n items:\n type: string\n minLength: 1\n pattern: \\S\n uniqueItems: true\n attachments:\n type: array\n items:\n type: string\n minLength: 1\n uniqueItems: true\n timeEstimate:\n type: integer\n minimum: 0\n completedDate:\n type: string\n format: date\n dateCreated:\n type: string\n format: date-time\n dateModified:\n type: string\n format: date-time\n recurrence:\n type: string\n recurrence_anchor:\n enum:\n - scheduled\n - completion\n default: scheduled\n occurrence_materialization:\n enum:\n - manual\n - on_completion\n - rolling\n default: manual\n occurrence_next_trigger:\n enum:\n - completion\n - completion_or_skip\n default: completion\n occurrence_template:\n type: string\n occurrence_past_horizon:\n type: string\n occurrence_future_horizon:\n type: string\n recurrence_parent:\n type: string\n occurrence_date:\n type: string\n format: date\n tags:\n type: array\n items:\n type: string\n timeEntries:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n startTime:\n type: string\n format: date-time\n endTime:\n type: string\n format: date-time\n description:\n type: string\n duration:\n type: integer\n reminders:\n type: array\n items:\n oneOf:\n - type: object\n required:\n - id\n - type\n - absoluteTime\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: absolute\n description:\n type: string\n absoluteTime:\n type: string\n format: date-time\n - type: object\n required:\n - id\n - type\n - relatedTo\n - offset\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: relative\n description:\n type: string\n relatedTo:\n enum:\n - due\n - scheduled\n offset:\n type: string\n blockedBy:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n uid:\n type: string\n reltype:\n type: string\n gap:\n type: string\n required:\n - uid\n complete_instances:\n type: array\n items:\n type: string\n format: date\n skipped_instances:\n type: array\n items:\n type: string\n format: date\n icsEventId:\n type: array\n items:\n type: string\n googleCalendarEventId:\n type: string\n googleCalendarExceptionEventId:\n type: string\n googleCalendarExceptionOriginalScheduled:\n type: string\n format: date\n googleCalendarMovedOriginalDates:\n type: array\n items:\n type: string\n format: date\n tasknotes_manual_order:\n type: string\n allOf:\n - if:\n required:\n - status\n properties:\n status:\n enum: &a3\n - done\n not:\n required:\n - recurrence\n then:\n required:\n - completedDate\n required:\n - title\n - status\n - dateCreated\ncollection:\n read_defaults:\n status: open\n priority: normal\n recurrence_anchor: scheduled\n occurrence_materialization: manual\n occurrence_next_trigger: completion\n links:\n projects[]:\n target_type: any\n validate_exists: false\n assignees[]:\n validate_exists: false\n attachments[]:\n validate_exists: false\n occurrence_template:\n target_type: any\n validate_exists: false\n recurrence_parent:\n target_type: task\n validate_exists: false\n blockedBy[].uid:\n target_type: task\n validate_exists: false\n path:\n runtime: tasknotes\n template: \"{{zettel}}\"\n folder: tasks\n generated_by: tasknotes.filename.create\n display:\n name_field: title\n unique:\n - field: id\n scope: type\nlifecycle:\n on_create:\n set:\n id:\n uuid: true\n dateCreated:\n now: true\n dateModified:\n now: true\n on_update:\n set:\n dateModified:\n now: true\nimplements:\n - contract: tasknotes.task\n version: 0.3.0-rc.5\n fields:\n id: id\n title: title\n status: status\n priority: priority\n due: due\n scheduled: scheduled\n contexts: contexts\n projects: projects\n assignees: assignees\n attachments: attachments\n timeEstimate: timeEstimate\n completedDate: completedDate\n dateCreated: dateCreated\n dateModified: dateModified\n recurrence: recurrence\n recurrenceAnchor: recurrence_anchor\n occurrenceMaterialization: occurrence_materialization\n occurrenceNextTrigger: occurrence_next_trigger\n occurrenceTemplate: occurrence_template\n occurrencePastHorizon: occurrence_past_horizon\n occurrenceFutureHorizon: occurrence_future_horizon\n recurrenceParent: recurrence_parent\n occurrenceDate: occurrence_date\n tags: tags\n timeEntries: timeEntries\n reminders: reminders\n blockedBy: blockedBy\n completeInstances: complete_instances\n skippedInstances: skipped_instances\n icsEventId: icsEventId\n googleCalendarEventId: googleCalendarEventId\n googleCalendarExceptionEventId: googleCalendarExceptionEventId\n googleCalendarExceptionOriginalScheduled: googleCalendarExceptionOriginalScheduled\n googleCalendarMovedOriginalDates: googleCalendarMovedOriginalDates\n sortOrder: tasknotes_manual_order\n binding:\n profiles:\n - core-lite\n - recurrence\n - materialized-occurrences\n capabilities:\n - dependencies\n - reminders\n - attachments\n - links\n - time-tracking\n - materialized-occurrences\n - archive\n - templating\n title:\n storage: frontmatter\n filename_format: zettel\n status:\n values: *a2\n default: open\n completed_values: *a3\n skipped_values:\n - cancelled\n default_skipped: cancelled\n definitions:\n - value: none\n label: None\n color: \"#94a3b8\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 0\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: open\n label: Open\n color: \"#64748b\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 1\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: in-progress\n label: In progress\n color: \"#3b82f6\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 2\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: done\n label: Done\n color: \"#22c55e\"\n is_completed: true\n is_skipped: false\n exclude_from_cycle: false\n order: 3\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: cancelled\n label: Cancelled\n color: \"#94a3b8\"\n is_completed: false\n is_skipped: true\n exclude_from_cycle: true\n order: 4\n auto_archive: false\n auto_archive_delay_minutes: 5\n priority:\n values: *a4\n default: normal\n definitions:\n - value: none\n label: None\n color: \"#94a3b8\"\n weight: 0\n - value: low\n label: Low\n color: \"#3b82f6\"\n weight: 1\n - value: normal\n label: Normal\n color: \"#f59e0b\"\n weight: 2\n - value: high\n label: High\n color: \"#ef4444\"\n weight: 3\n recurrence:\n syntax: tasknotes\n maintain_due_date_offset: true\n reset_body_checkboxes: false\n occurrences:\n identity_roles:\n - recurrenceParent\n - occurrenceDate\n default_materialization: manual\n default_next_trigger: completion\n past_horizon: P0D\n future_horizon: P14D\n links:\n accepted_formats:\n - wikilink\n - markdown\n write_format: wikilink\n archive:\n archived_tag: archived\n move_on_archive: false\n time_tracking:\n auto_stop_on_complete: false\n templating:\n enabled: false\n occurrence_enabled: false\nx-tasknotes-generator:\n managed_fields:\n - assignees\n - attachments\n - blockedBy\n - complete_instances\n - completedDate\n - contexts\n - dateCreated\n - dateModified\n - due\n - googleCalendarEventId\n - googleCalendarExceptionEventId\n - googleCalendarExceptionOriginalScheduled\n - googleCalendarMovedOriginalDates\n - icsEventId\n - id\n - occurrence_date\n - occurrence_future_horizon\n - occurrence_materialization\n - occurrence_next_trigger\n - occurrence_past_horizon\n - occurrence_template\n - priority\n - projects\n - recurrence\n - recurrence_anchor\n - recurrence_parent\n - reminders\n - scheduled\n - skipped_instances\n - status\n - tags\n - tasknotes_manual_order\n - timeEntries\n - timeEstimate\n - title\n---\n# Task\n\nTask records live under `tasks/`.\n" - }, - { - "source": "schemas/tasknotes.task/0.3.0-rc.5.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://tasknotes.dev/schemas/tasknotes-task.schema.json\",\n \"title\": \"TaskNotes portable task view\",\n \"description\": \"The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.5 record contract.\",\n \"type\": \"object\",\n \"required\": [\n \"status\",\n \"dateCreated\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"title\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"status\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"priority\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"due\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n ]\n },\n \"scheduled\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n ]\n },\n \"contexts\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"projects\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"assignees\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"pattern\": \"\\\\S\"\n },\n \"description\": \"Links to records implementing mdbase.person, such as [[Alex Rivera]]. Implementing types declare this field in collection.links. These references never grant collection access.\"\n },\n \"attachments\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"timeEstimate\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"completedDate\": {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n \"dateCreated\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"dateModified\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"recurrence\": {\n \"type\": \"string\"\n },\n \"recurrenceAnchor\": {\n \"enum\": [\n \"scheduled\",\n \"completion\"\n ]\n },\n \"recurrenceParent\": {\n \"type\": \"string\"\n },\n \"occurrenceDate\": {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n \"occurrenceMaterialization\": {\n \"enum\": [\n \"manual\",\n \"on_completion\",\n \"rolling\"\n ]\n },\n \"occurrenceNextTrigger\": {\n \"enum\": [\n \"completion\",\n \"completion_or_skip\"\n ]\n },\n \"occurrenceTemplate\": {\n \"type\": \"string\"\n },\n \"occurrencePastHorizon\": {\n \"type\": \"string\"\n },\n \"occurrenceFutureHorizon\": {\n \"type\": \"string\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"timeEntries\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"reminders\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"blockedBy\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"completeInstances\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"date\"\n }\n },\n \"skippedInstances\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"date\"\n }\n },\n \"icsEventId\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"googleCalendarEventId\": {\n \"type\": \"string\"\n },\n \"googleCalendarExceptionEventId\": {\n \"type\": \"string\"\n },\n \"googleCalendarExceptionOriginalScheduled\": {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n \"googleCalendarMovedOriginalDates\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"date\"\n }\n },\n \"sortOrder\": {\n \"type\": \"string\"\n }\n }\n}\n" - }, - { - "source": "schemas/tasknotes.task.binding/0.3.0-rc.5.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json\",\n \"title\": \"TaskNotes task data-contract binding\",\n \"description\": \"Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3.\",\n \"type\": \"object\",\n \"required\": [\n \"profiles\",\n \"capabilities\",\n \"title\",\n \"status\",\n \"priority\",\n \"recurrence\",\n \"occurrences\",\n \"links\",\n \"archive\",\n \"time_tracking\",\n \"templating\"\n ],\n \"properties\": {\n \"profiles\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"core-lite\",\n \"recurrence\",\n \"templating\",\n \"materialized-occurrences\",\n \"extended\"\n ]\n }\n },\n \"capabilities\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"dependencies\",\n \"reminders\",\n \"attachments\",\n \"links\",\n \"time-tracking\",\n \"materialized-occurrences\",\n \"rename\",\n \"archive\",\n \"batch\",\n \"concurrency\",\n \"dry-run\",\n \"migration\",\n \"templating\"\n ]\n }\n },\n \"title\": {\n \"$ref\": \"#/$defs/titlePolicy\"\n },\n \"status\": {\n \"$ref\": \"#/$defs/statusPolicy\"\n },\n \"priority\": {\n \"$ref\": \"#/$defs/priorityPolicy\"\n },\n \"recurrence\": {\n \"$ref\": \"#/$defs/recurrencePolicy\"\n },\n \"occurrences\": {\n \"$ref\": \"#/$defs/occurrencePolicy\"\n },\n \"links\": {\n \"$ref\": \"#/$defs/linkPolicy\"\n },\n \"archive\": {\n \"$ref\": \"#/$defs/archivePolicy\"\n },\n \"time_tracking\": {\n \"$ref\": \"#/$defs/timeTrackingPolicy\"\n },\n \"templating\": {\n \"$ref\": \"#/$defs/templatingPolicy\"\n },\n \"nlp\": {\n \"$ref\": \"#/$defs/nlpPolicy\"\n }\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"nonEmptyString\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"stringSet\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"titlePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"storage\"\n ],\n \"properties\": {\n \"storage\": {\n \"enum\": [\n \"filename\",\n \"frontmatter\"\n ]\n },\n \"filename_format\": {\n \"enum\": [\n \"title\",\n \"zettel\",\n \"timestamp\",\n \"uuid\",\n \"custom\"\n ]\n },\n \"custom_filename_template\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": {\n \"filename_format\": {\n \"const\": \"custom\"\n }\n },\n \"required\": [\n \"filename_format\"\n ]\n },\n \"then\": {\n \"properties\": {\n \"custom_filename_template\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"required\": [\n \"custom_filename_template\"\n ]\n }\n }\n ],\n \"additionalProperties\": true\n },\n \"statusDefinition\": {\n \"type\": \"object\",\n \"required\": [\n \"value\",\n \"label\",\n \"color\",\n \"is_completed\",\n \"is_skipped\",\n \"exclude_from_cycle\",\n \"order\",\n \"auto_archive\",\n \"auto_archive_delay_minutes\"\n ],\n \"properties\": {\n \"value\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"is_completed\": {\n \"type\": \"boolean\"\n },\n \"is_skipped\": {\n \"type\": \"boolean\"\n },\n \"exclude_from_cycle\": {\n \"type\": \"boolean\"\n },\n \"next_status\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"order\": {\n \"type\": \"number\"\n },\n \"auto_archive\": {\n \"type\": \"boolean\"\n },\n \"auto_archive_delay_minutes\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n },\n \"additionalProperties\": true\n },\n \"statusPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"values\",\n \"default\",\n \"completed_values\",\n \"definitions\"\n ],\n \"properties\": {\n \"values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"default\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"completed_values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"skipped_values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"default_skipped\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"definitions\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/statusDefinition\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"priorityDefinition\": {\n \"type\": \"object\",\n \"required\": [\n \"value\",\n \"label\",\n \"color\",\n \"weight\"\n ],\n \"properties\": {\n \"value\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"weight\": {\n \"type\": \"number\"\n }\n },\n \"additionalProperties\": true\n },\n \"priorityPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"values\",\n \"default\",\n \"definitions\"\n ],\n \"properties\": {\n \"values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"default\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"definitions\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/priorityDefinition\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"recurrencePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"syntax\",\n \"maintain_due_date_offset\",\n \"reset_body_checkboxes\"\n ],\n \"properties\": {\n \"syntax\": {\n \"const\": \"tasknotes\"\n },\n \"maintain_due_date_offset\": {\n \"type\": \"boolean\"\n },\n \"reset_body_checkboxes\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"occurrencePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"identity_roles\",\n \"default_materialization\",\n \"default_next_trigger\"\n ],\n \"properties\": {\n \"identity_roles\": {\n \"const\": [\n \"recurrenceParent\",\n \"occurrenceDate\"\n ]\n },\n \"default_materialization\": {\n \"enum\": [\n \"manual\",\n \"on_completion\",\n \"rolling\"\n ]\n },\n \"default_next_trigger\": {\n \"enum\": [\n \"completion\",\n \"completion_or_skip\"\n ]\n },\n \"past_horizon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"future_horizon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"additionalProperties\": false\n },\n \"linkPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"accepted_formats\",\n \"write_format\"\n ],\n \"properties\": {\n \"accepted_formats\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"wikilink\",\n \"markdown\"\n ]\n }\n },\n \"write_format\": {\n \"enum\": [\n \"wikilink\",\n \"markdown\"\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"archivePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"archived_tag\",\n \"move_on_archive\"\n ],\n \"properties\": {\n \"archived_tag\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"move_on_archive\": {\n \"type\": \"boolean\"\n },\n \"folder\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"additionalProperties\": false\n },\n \"timeTrackingPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"auto_stop_on_complete\"\n ],\n \"properties\": {\n \"auto_stop_on_complete\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"templatingPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"enabled\",\n \"occurrence_enabled\"\n ],\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"template_path\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"occurrence_enabled\": {\n \"type\": \"boolean\"\n },\n \"occurrence_template_path\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"failure_mode\": {\n \"enum\": [\n \"error\",\n \"warning_fallback\"\n ]\n },\n \"unknown_variable_policy\": {\n \"enum\": [\n \"preserve\",\n \"empty\"\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"nlpTrigger\": {\n \"type\": \"object\",\n \"required\": [\n \"property_id\",\n \"trigger\",\n \"enabled\"\n ],\n \"properties\": {\n \"property_id\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"trigger\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"nlpPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"triggers\"\n ],\n \"properties\": {\n \"triggers\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/nlpTrigger\"\n }\n }\n },\n \"additionalProperties\": false\n }\n }\n}\n" - } - ], - "provides": [ - { - "id": "tasknotes.task", - "version": "0.3.0-rc.5", - "digest": "sha256:dde71d0d776aa0069ee627fe3c10b1a20f87ba36929a16790598ebfb4e8ebf04" - } - ] -} diff --git a/public/contracts/packs/tasknotes.task/0.3.0-rc.17.json b/public/contracts/packs/tasknotes.task/0.3.0-rc.17.json deleted file mode 100644 index 5e53450..0000000 --- a/public/contracts/packs/tasknotes.task/0.3.0-rc.17.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "manifest": { - "kind": "mdbase.type-pack", - "id": "tasknotes.task", - "version": "0.3.0-rc.17", - "name": "TaskNotes task type pack", - "description": "Portable tasks whose assignments link to person records, with a reviewed, atomic starter upgrade that keeps each collection's generator bookkeeping.", - "resources": [ - { - "kind": "contract", - "mode": "managed", - "source": "contracts/tasknotes.task/0.3.0-rc.5.md", - "target": "_contracts/tasknotes.task.md", - "digest": "sha256:ecadd00700e249940f4244aaa5b5985a96557d13340463ec491dfa5e89b032a4" - }, - { - "kind": "type", - "mode": "seed", - "source": "types/tasknotes-task/5.md", - "target": "_types/task.md", - "digest": "sha256:b3cf8dbe8885b331c494d2eeb36abfb052890e06b757877d655c269e666487dc", - "upgrade_from": { - "digest": "sha256:b7f8af7b18d77859dab1f1532c1b55c08c7c39879f55e4ef2a94cb7d2d2284eb", - "document": "---\nkind: mdbase.type\nname: task\nversion: 1\ndescription: A task managed by TaskNotes.\nmatch:\n where:\n tags:\n contains: task\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n type: object\n additionalProperties: true\n properties:\n id:\n type: string\n minLength: 1\n title:\n type: string\n minLength: 1\n status:\n enum: &a2\n - none\n - open\n - in-progress\n - done\n - cancelled\n default: open\n priority:\n enum: &a4\n - none\n - low\n - normal\n - high\n default: normal\n due: &a1\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n scheduled: *a1\n contexts:\n type: array\n items:\n type: string\n projects:\n type: array\n items:\n type: string\n attachments:\n type: array\n items:\n type: string\n minLength: 1\n uniqueItems: true\n timeEstimate:\n type: integer\n minimum: 0\n completedDate:\n type: string\n format: date\n dateCreated:\n type: string\n format: date-time\n dateModified:\n type: string\n format: date-time\n recurrence:\n type: string\n recurrence_anchor:\n enum:\n - scheduled\n - completion\n default: scheduled\n occurrence_materialization:\n enum:\n - manual\n - on_completion\n - rolling\n default: manual\n occurrence_next_trigger:\n enum:\n - completion\n - completion_or_skip\n default: completion\n occurrence_template:\n type: string\n occurrence_past_horizon:\n type: string\n occurrence_future_horizon:\n type: string\n recurrence_parent:\n type: string\n occurrence_date:\n type: string\n format: date\n tags:\n type: array\n items:\n type: string\n timeEntries:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n startTime:\n type: string\n format: date-time\n endTime:\n type: string\n format: date-time\n description:\n type: string\n duration:\n type: integer\n reminders:\n type: array\n items:\n oneOf:\n - type: object\n required:\n - id\n - type\n - absoluteTime\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: absolute\n description:\n type: string\n absoluteTime:\n type: string\n format: date-time\n - type: object\n required:\n - id\n - type\n - relatedTo\n - offset\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: relative\n description:\n type: string\n relatedTo:\n enum:\n - due\n - scheduled\n offset:\n type: string\n blockedBy:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n uid:\n type: string\n reltype:\n type: string\n gap:\n type: string\n required:\n - uid\n complete_instances:\n type: array\n items:\n type: string\n format: date\n skipped_instances:\n type: array\n items:\n type: string\n format: date\n icsEventId:\n type: array\n items:\n type: string\n googleCalendarEventId:\n type: string\n googleCalendarExceptionEventId:\n type: string\n googleCalendarExceptionOriginalScheduled:\n type: string\n format: date\n googleCalendarMovedOriginalDates:\n type: array\n items:\n type: string\n format: date\n tasknotes_manual_order:\n type: string\n allOf:\n - if:\n required:\n - status\n properties:\n status:\n enum: &a3\n - done\n not:\n required:\n - recurrence\n then:\n required:\n - completedDate\n required:\n - title\n - status\n - dateCreated\ncollection:\n read_defaults:\n status: open\n priority: normal\n recurrence_anchor: scheduled\n occurrence_materialization: manual\n occurrence_next_trigger: completion\n links:\n projects[]:\n target_type: any\n validate_exists: false\n attachments[]:\n validate_exists: false\n occurrence_template:\n target_type: any\n validate_exists: false\n recurrence_parent:\n target_type: task\n validate_exists: false\n blockedBy[].uid:\n target_type: task\n validate_exists: false\n path:\n runtime: tasknotes\n template: \"{{zettel}}\"\n folder: tasks\n generated_by: tasknotes.filename.create\n display:\n name_field: title\n unique:\n - field: id\n scope: type\nlifecycle:\n on_create:\n set:\n id:\n uuid: true\n dateCreated:\n now: true\n dateModified:\n now: true\n on_update:\n set:\n dateModified:\n now: true\nimplements:\n - contract: tasknotes.task\n version: 0.3.0-rc.3\n fields:\n id: id\n title: title\n status: status\n priority: priority\n due: due\n scheduled: scheduled\n contexts: contexts\n projects: projects\n attachments: attachments\n timeEstimate: timeEstimate\n completedDate: completedDate\n dateCreated: dateCreated\n dateModified: dateModified\n recurrence: recurrence\n recurrenceAnchor: recurrence_anchor\n occurrenceMaterialization: occurrence_materialization\n occurrenceNextTrigger: occurrence_next_trigger\n occurrenceTemplate: occurrence_template\n occurrencePastHorizon: occurrence_past_horizon\n occurrenceFutureHorizon: occurrence_future_horizon\n recurrenceParent: recurrence_parent\n occurrenceDate: occurrence_date\n tags: tags\n timeEntries: timeEntries\n reminders: reminders\n blockedBy: blockedBy\n completeInstances: complete_instances\n skippedInstances: skipped_instances\n icsEventId: icsEventId\n googleCalendarEventId: googleCalendarEventId\n googleCalendarExceptionEventId: googleCalendarExceptionEventId\n googleCalendarExceptionOriginalScheduled: googleCalendarExceptionOriginalScheduled\n googleCalendarMovedOriginalDates: googleCalendarMovedOriginalDates\n sortOrder: tasknotes_manual_order\n binding:\n profiles:\n - core-lite\n - recurrence\n - materialized-occurrences\n capabilities:\n - dependencies\n - reminders\n - attachments\n - links\n - time-tracking\n - materialized-occurrences\n - archive\n - templating\n title:\n storage: frontmatter\n filename_format: zettel\n status:\n values: *a2\n default: open\n completed_values: *a3\n skipped_values:\n - cancelled\n default_skipped: cancelled\n definitions:\n - value: none\n label: None\n color: \"#94a3b8\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 0\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: open\n label: Open\n color: \"#64748b\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 1\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: in-progress\n label: In progress\n color: \"#3b82f6\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 2\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: done\n label: Done\n color: \"#22c55e\"\n is_completed: true\n is_skipped: false\n exclude_from_cycle: false\n order: 3\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: cancelled\n label: Cancelled\n color: \"#94a3b8\"\n is_completed: false\n is_skipped: true\n exclude_from_cycle: true\n order: 4\n auto_archive: false\n auto_archive_delay_minutes: 5\n priority:\n values: *a4\n default: normal\n definitions:\n - value: none\n label: None\n color: \"#94a3b8\"\n weight: 0\n - value: low\n label: Low\n color: \"#3b82f6\"\n weight: 1\n - value: normal\n label: Normal\n color: \"#f59e0b\"\n weight: 2\n - value: high\n label: High\n color: \"#ef4444\"\n weight: 3\n recurrence:\n syntax: tasknotes\n maintain_due_date_offset: true\n reset_body_checkboxes: false\n occurrences:\n identity_roles:\n - recurrenceParent\n - occurrenceDate\n default_materialization: manual\n default_next_trigger: completion\n past_horizon: P0D\n future_horizon: P14D\n links:\n accepted_formats:\n - wikilink\n - markdown\n write_format: wikilink\n archive:\n archived_tag: archived\n move_on_archive: false\n time_tracking:\n auto_stop_on_complete: false\n templating:\n enabled: false\n occurrence_enabled: false\nx-tasknotes-generator:\n managed_fields:\n - attachments\n - blockedBy\n - complete_instances\n - completedDate\n - contexts\n - dateCreated\n - dateModified\n - due\n - googleCalendarEventId\n - googleCalendarExceptionEventId\n - googleCalendarExceptionOriginalScheduled\n - googleCalendarMovedOriginalDates\n - icsEventId\n - id\n - occurrence_date\n - occurrence_future_horizon\n - occurrence_materialization\n - occurrence_next_trigger\n - occurrence_past_horizon\n - occurrence_template\n - priority\n - projects\n - recurrence\n - recurrence_anchor\n - recurrence_parent\n - reminders\n - scheduled\n - skipped_instances\n - status\n - tags\n - tasknotes_manual_order\n - timeEntries\n - timeEstimate\n - title\n---\n# Task\n\nTask records live under `tasks/`.\n" - } - }, - { - "kind": "schema", - "mode": "managed", - "source": "schemas/tasknotes.task/0.3.0-rc.5.schema.json", - "target": "_schemas/tasknotes/tasknotes-task.schema.json", - "digest": "sha256:aec95578a093be95cbce0fb500964e7aeaeeacc611624fc2893074637dbd4125" - }, - { - "kind": "schema", - "mode": "managed", - "source": "schemas/tasknotes.task.binding/0.3.0-rc.5.schema.json", - "target": "_schemas/tasknotes/tasknotes-task-binding.schema.json", - "digest": "sha256:5b38e8a1c426b7f7fa92d8353fe35dd98e632305cbb15ffccde387473166b267" - } - ] - }, - "resources": [ - { - "source": "contracts/tasknotes.task/0.3.0-rc.5.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: tasknotes.task\nversion: 0.3.0-rc.5\nname: TaskNotes task\ndescription: Portable task data and behavior defined by tasknotes-spec 0.3.0-rc.5.\nrecord_schema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n $id: https://tasknotes.dev/schemas/tasknotes-task.schema.json\n title: TaskNotes portable task view\n description: The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.5 record contract.\n type: object\n required:\n - status\n - dateCreated\n additionalProperties: false\n properties:\n id:\n type: string\n minLength: 1\n title:\n type: string\n minLength: 1\n status:\n type: string\n minLength: 1\n priority:\n type: string\n minLength: 1\n due:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n scheduled:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n contexts:\n type: array\n items:\n type: string\n projects:\n type: array\n items:\n type: string\n assignees:\n type: array\n uniqueItems: true\n items:\n type: string\n minLength: 1\n pattern: \\S\n description: Links to records implementing mdbase.person, such as [[Alex Rivera]]. Implementing types declare this field in collection.links. These references never grant collection access.\n attachments:\n type: array\n uniqueItems: true\n items:\n type: string\n minLength: 1\n timeEstimate:\n type: integer\n minimum: 0\n completedDate:\n type: string\n format: date\n dateCreated:\n type: string\n format: date-time\n dateModified:\n type: string\n format: date-time\n recurrence:\n type: string\n recurrenceAnchor:\n enum:\n - scheduled\n - completion\n recurrenceParent:\n type: string\n occurrenceDate:\n type: string\n format: date\n occurrenceMaterialization:\n enum:\n - manual\n - on_completion\n - rolling\n occurrenceNextTrigger:\n enum:\n - completion\n - completion_or_skip\n occurrenceTemplate:\n type: string\n occurrencePastHorizon:\n type: string\n occurrenceFutureHorizon:\n type: string\n tags:\n type: array\n items:\n type: string\n timeEntries:\n type: array\n items:\n type: object\n reminders:\n type: array\n items:\n type: object\n blockedBy:\n type: array\n items:\n type: object\n completeInstances:\n type: array\n items:\n type: string\n format: date\n skippedInstances:\n type: array\n items:\n type: string\n format: date\n icsEventId:\n type: array\n items:\n type: string\n googleCalendarEventId:\n type: string\n googleCalendarExceptionEventId:\n type: string\n googleCalendarExceptionOriginalScheduled:\n type: string\n format: date\n googleCalendarMovedOriginalDates:\n type: array\n items:\n type: string\n format: date\n sortOrder:\n type: string\nbinding_schema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n $id: https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json\n title: TaskNotes task data-contract binding\n description: Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3.\n type: object\n required:\n - profiles\n - capabilities\n - title\n - status\n - priority\n - recurrence\n - occurrences\n - links\n - archive\n - time_tracking\n - templating\n properties:\n profiles:\n type: array\n minItems: 1\n uniqueItems: true\n items:\n enum:\n - core-lite\n - recurrence\n - templating\n - materialized-occurrences\n - extended\n capabilities:\n type: array\n uniqueItems: true\n items:\n enum:\n - dependencies\n - reminders\n - attachments\n - links\n - time-tracking\n - materialized-occurrences\n - rename\n - archive\n - batch\n - concurrency\n - dry-run\n - migration\n - templating\n title:\n $ref: \"#/$defs/titlePolicy\"\n status:\n $ref: \"#/$defs/statusPolicy\"\n priority:\n $ref: \"#/$defs/priorityPolicy\"\n recurrence:\n $ref: \"#/$defs/recurrencePolicy\"\n occurrences:\n $ref: \"#/$defs/occurrencePolicy\"\n links:\n $ref: \"#/$defs/linkPolicy\"\n archive:\n $ref: \"#/$defs/archivePolicy\"\n time_tracking:\n $ref: \"#/$defs/timeTrackingPolicy\"\n templating:\n $ref: \"#/$defs/templatingPolicy\"\n nlp:\n $ref: \"#/$defs/nlpPolicy\"\n additionalProperties: false\n $defs:\n nonEmptyString:\n type: string\n minLength: 1\n stringSet:\n type: array\n uniqueItems: true\n items:\n $ref: \"#/$defs/nonEmptyString\"\n titlePolicy:\n type: object\n required:\n - storage\n properties:\n storage:\n enum:\n - filename\n - frontmatter\n filename_format:\n enum:\n - title\n - zettel\n - timestamp\n - uuid\n - custom\n custom_filename_template:\n $ref: \"#/$defs/nonEmptyString\"\n allOf:\n - if:\n properties:\n filename_format:\n const: custom\n required:\n - filename_format\n then:\n properties:\n custom_filename_template:\n $ref: \"#/$defs/nonEmptyString\"\n required:\n - custom_filename_template\n additionalProperties: true\n statusDefinition:\n type: object\n required:\n - value\n - label\n - color\n - is_completed\n - is_skipped\n - exclude_from_cycle\n - order\n - auto_archive\n - auto_archive_delay_minutes\n properties:\n value:\n $ref: \"#/$defs/nonEmptyString\"\n label:\n type: string\n color:\n type: string\n icon:\n $ref: \"#/$defs/nonEmptyString\"\n is_completed:\n type: boolean\n is_skipped:\n type: boolean\n exclude_from_cycle:\n type: boolean\n next_status:\n $ref: \"#/$defs/nonEmptyString\"\n order:\n type: number\n auto_archive:\n type: boolean\n auto_archive_delay_minutes:\n type: number\n minimum: 0\n additionalProperties: true\n statusPolicy:\n type: object\n required:\n - values\n - default\n - completed_values\n - definitions\n properties:\n values:\n $ref: \"#/$defs/stringSet\"\n default:\n $ref: \"#/$defs/nonEmptyString\"\n completed_values:\n $ref: \"#/$defs/stringSet\"\n skipped_values:\n $ref: \"#/$defs/stringSet\"\n default_skipped:\n $ref: \"#/$defs/nonEmptyString\"\n definitions:\n type: array\n items:\n $ref: \"#/$defs/statusDefinition\"\n additionalProperties: false\n priorityDefinition:\n type: object\n required:\n - value\n - label\n - color\n - weight\n properties:\n value:\n $ref: \"#/$defs/nonEmptyString\"\n label:\n type: string\n color:\n type: string\n icon:\n $ref: \"#/$defs/nonEmptyString\"\n weight:\n type: number\n additionalProperties: true\n priorityPolicy:\n type: object\n required:\n - values\n - default\n - definitions\n properties:\n values:\n $ref: \"#/$defs/stringSet\"\n default:\n $ref: \"#/$defs/nonEmptyString\"\n definitions:\n type: array\n items:\n $ref: \"#/$defs/priorityDefinition\"\n additionalProperties: false\n recurrencePolicy:\n type: object\n required:\n - syntax\n - maintain_due_date_offset\n - reset_body_checkboxes\n properties:\n syntax:\n const: tasknotes\n maintain_due_date_offset:\n type: boolean\n reset_body_checkboxes:\n type: boolean\n additionalProperties: false\n occurrencePolicy:\n type: object\n required:\n - identity_roles\n - default_materialization\n - default_next_trigger\n properties:\n identity_roles:\n const:\n - recurrenceParent\n - occurrenceDate\n default_materialization:\n enum:\n - manual\n - on_completion\n - rolling\n default_next_trigger:\n enum:\n - completion\n - completion_or_skip\n past_horizon:\n $ref: \"#/$defs/nonEmptyString\"\n future_horizon:\n $ref: \"#/$defs/nonEmptyString\"\n additionalProperties: false\n linkPolicy:\n type: object\n required:\n - accepted_formats\n - write_format\n properties:\n accepted_formats:\n type: array\n minItems: 1\n uniqueItems: true\n items:\n enum:\n - wikilink\n - markdown\n write_format:\n enum:\n - wikilink\n - markdown\n additionalProperties: false\n archivePolicy:\n type: object\n required:\n - archived_tag\n - move_on_archive\n properties:\n archived_tag:\n $ref: \"#/$defs/nonEmptyString\"\n move_on_archive:\n type: boolean\n folder:\n $ref: \"#/$defs/nonEmptyString\"\n additionalProperties: false\n timeTrackingPolicy:\n type: object\n required:\n - auto_stop_on_complete\n properties:\n auto_stop_on_complete:\n type: boolean\n additionalProperties: false\n templatingPolicy:\n type: object\n required:\n - enabled\n - occurrence_enabled\n properties:\n enabled:\n type: boolean\n template_path:\n $ref: \"#/$defs/nonEmptyString\"\n occurrence_enabled:\n type: boolean\n occurrence_template_path:\n $ref: \"#/$defs/nonEmptyString\"\n failure_mode:\n enum:\n - error\n - warning_fallback\n unknown_variable_policy:\n enum:\n - preserve\n - empty\n additionalProperties: false\n nlpTrigger:\n type: object\n required:\n - property_id\n - trigger\n - enabled\n properties:\n property_id:\n $ref: \"#/$defs/nonEmptyString\"\n trigger:\n $ref: \"#/$defs/nonEmptyString\"\n enabled:\n type: boolean\n additionalProperties: false\n nlpPolicy:\n type: object\n required:\n - triggers\n properties:\n triggers:\n type: array\n items:\n $ref: \"#/$defs/nlpTrigger\"\n additionalProperties: false\n---\n\n# TaskNotes task contract\n\nTypes implement this contract through `implements`; applications consume\nthe normalized contract view rather than assuming frontmatter names.\n" - }, - { - "source": "types/tasknotes-task/5.md", - "document": "---\nkind: mdbase.type\nname: task\nversion: 4\ndescription: A task managed by TaskNotes.\nmatch:\n where:\n tags:\n contains: task\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n type: object\n additionalProperties: true\n properties:\n id:\n type: string\n minLength: 1\n title:\n type: string\n minLength: 1\n status:\n enum: &a2\n - none\n - open\n - in-progress\n - done\n - cancelled\n default: open\n priority:\n enum: &a4\n - none\n - low\n - normal\n - high\n default: normal\n due: &a1\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n scheduled: *a1\n contexts:\n type: array\n items:\n type: string\n projects:\n type: array\n items:\n type: string\n assignees:\n type: array\n items:\n type: string\n minLength: 1\n pattern: \\S\n uniqueItems: true\n attachments:\n type: array\n items:\n type: string\n minLength: 1\n uniqueItems: true\n timeEstimate:\n type: integer\n minimum: 0\n completedDate:\n type: string\n format: date\n dateCreated:\n type: string\n format: date-time\n dateModified:\n type: string\n format: date-time\n recurrence:\n type: string\n recurrence_anchor:\n enum:\n - scheduled\n - completion\n default: scheduled\n occurrence_materialization:\n enum:\n - manual\n - on_completion\n - rolling\n default: manual\n occurrence_next_trigger:\n enum:\n - completion\n - completion_or_skip\n default: completion\n occurrence_template:\n type: string\n occurrence_past_horizon:\n type: string\n occurrence_future_horizon:\n type: string\n recurrence_parent:\n type: string\n occurrence_date:\n type: string\n format: date\n tags:\n type: array\n items:\n type: string\n timeEntries:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n startTime:\n type: string\n format: date-time\n endTime:\n type: string\n format: date-time\n description:\n type: string\n duration:\n type: integer\n reminders:\n type: array\n items:\n oneOf:\n - type: object\n required:\n - id\n - type\n - absoluteTime\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: absolute\n description:\n type: string\n absoluteTime:\n type: string\n format: date-time\n - type: object\n required:\n - id\n - type\n - relatedTo\n - offset\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: relative\n description:\n type: string\n relatedTo:\n enum:\n - due\n - scheduled\n offset:\n type: string\n blockedBy:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n uid:\n type: string\n reltype:\n type: string\n gap:\n type: string\n required:\n - uid\n complete_instances:\n type: array\n items:\n type: string\n format: date\n skipped_instances:\n type: array\n items:\n type: string\n format: date\n icsEventId:\n type: array\n items:\n type: string\n googleCalendarEventId:\n type: string\n googleCalendarExceptionEventId:\n type: string\n googleCalendarExceptionOriginalScheduled:\n type: string\n format: date\n googleCalendarMovedOriginalDates:\n type: array\n items:\n type: string\n format: date\n tasknotes_manual_order:\n type: string\n allOf:\n - if:\n required:\n - status\n properties:\n status:\n enum: &a3\n - done\n not:\n required:\n - recurrence\n then:\n required:\n - completedDate\n required:\n - title\n - status\n - dateCreated\ncollection:\n read_defaults:\n status: open\n priority: normal\n recurrence_anchor: scheduled\n occurrence_materialization: manual\n occurrence_next_trigger: completion\n links:\n projects[]:\n target_type: any\n validate_exists: false\n assignees[]:\n validate_exists: false\n attachments[]:\n validate_exists: false\n occurrence_template:\n target_type: any\n validate_exists: false\n recurrence_parent:\n target_type: task\n validate_exists: false\n blockedBy[].uid:\n target_type: task\n validate_exists: false\n path:\n runtime: tasknotes\n template: \"{{zettel}}\"\n folder: tasks\n generated_by: tasknotes.filename.create\n display:\n name_field: title\n unique:\n - field: id\n scope: type\nlifecycle:\n on_create:\n set:\n id:\n uuid: true\n dateCreated:\n now: true\n dateModified:\n now: true\n on_update:\n set:\n dateModified:\n now: true\nimplements:\n - contract: tasknotes.task\n version: 0.3.0-rc.5\n fields:\n id: id\n title: title\n status: status\n priority: priority\n due: due\n scheduled: scheduled\n contexts: contexts\n projects: projects\n assignees: assignees\n attachments: attachments\n timeEstimate: timeEstimate\n completedDate: completedDate\n dateCreated: dateCreated\n dateModified: dateModified\n recurrence: recurrence\n recurrenceAnchor: recurrence_anchor\n occurrenceMaterialization: occurrence_materialization\n occurrenceNextTrigger: occurrence_next_trigger\n occurrenceTemplate: occurrence_template\n occurrencePastHorizon: occurrence_past_horizon\n occurrenceFutureHorizon: occurrence_future_horizon\n recurrenceParent: recurrence_parent\n occurrenceDate: occurrence_date\n tags: tags\n timeEntries: timeEntries\n reminders: reminders\n blockedBy: blockedBy\n completeInstances: complete_instances\n skippedInstances: skipped_instances\n icsEventId: icsEventId\n googleCalendarEventId: googleCalendarEventId\n googleCalendarExceptionEventId: googleCalendarExceptionEventId\n googleCalendarExceptionOriginalScheduled: googleCalendarExceptionOriginalScheduled\n googleCalendarMovedOriginalDates: googleCalendarMovedOriginalDates\n sortOrder: tasknotes_manual_order\n binding:\n profiles:\n - core-lite\n - recurrence\n - materialized-occurrences\n capabilities:\n - dependencies\n - reminders\n - attachments\n - links\n - time-tracking\n - materialized-occurrences\n - archive\n - templating\n title:\n storage: frontmatter\n filename_format: zettel\n status:\n values: *a2\n default: open\n completed_values: *a3\n skipped_values:\n - cancelled\n default_skipped: cancelled\n definitions:\n - value: none\n label: None\n color: \"#94a3b8\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 0\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: open\n label: Open\n color: \"#64748b\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 1\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: in-progress\n label: In progress\n color: \"#3b82f6\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 2\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: done\n label: Done\n color: \"#22c55e\"\n is_completed: true\n is_skipped: false\n exclude_from_cycle: false\n order: 3\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: cancelled\n label: Cancelled\n color: \"#94a3b8\"\n is_completed: false\n is_skipped: true\n exclude_from_cycle: true\n order: 4\n auto_archive: false\n auto_archive_delay_minutes: 5\n priority:\n values: *a4\n default: normal\n definitions:\n - value: none\n label: None\n color: \"#94a3b8\"\n weight: 0\n - value: low\n label: Low\n color: \"#3b82f6\"\n weight: 1\n - value: normal\n label: Normal\n color: \"#f59e0b\"\n weight: 2\n - value: high\n label: High\n color: \"#ef4444\"\n weight: 3\n recurrence:\n syntax: tasknotes\n maintain_due_date_offset: true\n reset_body_checkboxes: false\n occurrences:\n identity_roles:\n - recurrenceParent\n - occurrenceDate\n default_materialization: manual\n default_next_trigger: completion\n past_horizon: P0D\n future_horizon: P14D\n links:\n accepted_formats:\n - wikilink\n - markdown\n write_format: wikilink\n archive:\n archived_tag: archived\n move_on_archive: false\n time_tracking:\n auto_stop_on_complete: false\n templating:\n enabled: false\n occurrence_enabled: false\nx-tasknotes-generator:\n managed_fields:\n - attachments\n - blockedBy\n - complete_instances\n - completedDate\n - contexts\n - dateCreated\n - dateModified\n - due\n - googleCalendarEventId\n - googleCalendarExceptionEventId\n - googleCalendarExceptionOriginalScheduled\n - googleCalendarMovedOriginalDates\n - icsEventId\n - id\n - occurrence_date\n - occurrence_future_horizon\n - occurrence_materialization\n - occurrence_next_trigger\n - occurrence_past_horizon\n - occurrence_template\n - priority\n - projects\n - recurrence\n - recurrence_anchor\n - recurrence_parent\n - reminders\n - scheduled\n - skipped_instances\n - status\n - tags\n - tasknotes_manual_order\n - timeEntries\n - timeEstimate\n - title\n---\n# Task\n\nTask records live under `tasks/`.\n" - }, - { - "source": "schemas/tasknotes.task/0.3.0-rc.5.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://tasknotes.dev/schemas/tasknotes-task.schema.json\",\n \"title\": \"TaskNotes portable task view\",\n \"description\": \"The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.5 record contract.\",\n \"type\": \"object\",\n \"required\": [\n \"status\",\n \"dateCreated\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"title\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"status\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"priority\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"due\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n ]\n },\n \"scheduled\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n ]\n },\n \"contexts\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"projects\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"assignees\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"pattern\": \"\\\\S\"\n },\n \"description\": \"Links to records implementing mdbase.person, such as [[Alex Rivera]]. Implementing types declare this field in collection.links. These references never grant collection access.\"\n },\n \"attachments\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"timeEstimate\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"completedDate\": {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n \"dateCreated\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"dateModified\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"recurrence\": {\n \"type\": \"string\"\n },\n \"recurrenceAnchor\": {\n \"enum\": [\n \"scheduled\",\n \"completion\"\n ]\n },\n \"recurrenceParent\": {\n \"type\": \"string\"\n },\n \"occurrenceDate\": {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n \"occurrenceMaterialization\": {\n \"enum\": [\n \"manual\",\n \"on_completion\",\n \"rolling\"\n ]\n },\n \"occurrenceNextTrigger\": {\n \"enum\": [\n \"completion\",\n \"completion_or_skip\"\n ]\n },\n \"occurrenceTemplate\": {\n \"type\": \"string\"\n },\n \"occurrencePastHorizon\": {\n \"type\": \"string\"\n },\n \"occurrenceFutureHorizon\": {\n \"type\": \"string\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"timeEntries\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"reminders\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"blockedBy\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"completeInstances\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"date\"\n }\n },\n \"skippedInstances\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"date\"\n }\n },\n \"icsEventId\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"googleCalendarEventId\": {\n \"type\": \"string\"\n },\n \"googleCalendarExceptionEventId\": {\n \"type\": \"string\"\n },\n \"googleCalendarExceptionOriginalScheduled\": {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n \"googleCalendarMovedOriginalDates\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"date\"\n }\n },\n \"sortOrder\": {\n \"type\": \"string\"\n }\n }\n}\n" - }, - { - "source": "schemas/tasknotes.task.binding/0.3.0-rc.5.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json\",\n \"title\": \"TaskNotes task data-contract binding\",\n \"description\": \"Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3.\",\n \"type\": \"object\",\n \"required\": [\n \"profiles\",\n \"capabilities\",\n \"title\",\n \"status\",\n \"priority\",\n \"recurrence\",\n \"occurrences\",\n \"links\",\n \"archive\",\n \"time_tracking\",\n \"templating\"\n ],\n \"properties\": {\n \"profiles\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"core-lite\",\n \"recurrence\",\n \"templating\",\n \"materialized-occurrences\",\n \"extended\"\n ]\n }\n },\n \"capabilities\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"dependencies\",\n \"reminders\",\n \"attachments\",\n \"links\",\n \"time-tracking\",\n \"materialized-occurrences\",\n \"rename\",\n \"archive\",\n \"batch\",\n \"concurrency\",\n \"dry-run\",\n \"migration\",\n \"templating\"\n ]\n }\n },\n \"title\": {\n \"$ref\": \"#/$defs/titlePolicy\"\n },\n \"status\": {\n \"$ref\": \"#/$defs/statusPolicy\"\n },\n \"priority\": {\n \"$ref\": \"#/$defs/priorityPolicy\"\n },\n \"recurrence\": {\n \"$ref\": \"#/$defs/recurrencePolicy\"\n },\n \"occurrences\": {\n \"$ref\": \"#/$defs/occurrencePolicy\"\n },\n \"links\": {\n \"$ref\": \"#/$defs/linkPolicy\"\n },\n \"archive\": {\n \"$ref\": \"#/$defs/archivePolicy\"\n },\n \"time_tracking\": {\n \"$ref\": \"#/$defs/timeTrackingPolicy\"\n },\n \"templating\": {\n \"$ref\": \"#/$defs/templatingPolicy\"\n },\n \"nlp\": {\n \"$ref\": \"#/$defs/nlpPolicy\"\n }\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"nonEmptyString\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"stringSet\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"titlePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"storage\"\n ],\n \"properties\": {\n \"storage\": {\n \"enum\": [\n \"filename\",\n \"frontmatter\"\n ]\n },\n \"filename_format\": {\n \"enum\": [\n \"title\",\n \"zettel\",\n \"timestamp\",\n \"uuid\",\n \"custom\"\n ]\n },\n \"custom_filename_template\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": {\n \"filename_format\": {\n \"const\": \"custom\"\n }\n },\n \"required\": [\n \"filename_format\"\n ]\n },\n \"then\": {\n \"properties\": {\n \"custom_filename_template\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"required\": [\n \"custom_filename_template\"\n ]\n }\n }\n ],\n \"additionalProperties\": true\n },\n \"statusDefinition\": {\n \"type\": \"object\",\n \"required\": [\n \"value\",\n \"label\",\n \"color\",\n \"is_completed\",\n \"is_skipped\",\n \"exclude_from_cycle\",\n \"order\",\n \"auto_archive\",\n \"auto_archive_delay_minutes\"\n ],\n \"properties\": {\n \"value\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"is_completed\": {\n \"type\": \"boolean\"\n },\n \"is_skipped\": {\n \"type\": \"boolean\"\n },\n \"exclude_from_cycle\": {\n \"type\": \"boolean\"\n },\n \"next_status\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"order\": {\n \"type\": \"number\"\n },\n \"auto_archive\": {\n \"type\": \"boolean\"\n },\n \"auto_archive_delay_minutes\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n },\n \"additionalProperties\": true\n },\n \"statusPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"values\",\n \"default\",\n \"completed_values\",\n \"definitions\"\n ],\n \"properties\": {\n \"values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"default\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"completed_values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"skipped_values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"default_skipped\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"definitions\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/statusDefinition\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"priorityDefinition\": {\n \"type\": \"object\",\n \"required\": [\n \"value\",\n \"label\",\n \"color\",\n \"weight\"\n ],\n \"properties\": {\n \"value\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"weight\": {\n \"type\": \"number\"\n }\n },\n \"additionalProperties\": true\n },\n \"priorityPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"values\",\n \"default\",\n \"definitions\"\n ],\n \"properties\": {\n \"values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"default\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"definitions\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/priorityDefinition\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"recurrencePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"syntax\",\n \"maintain_due_date_offset\",\n \"reset_body_checkboxes\"\n ],\n \"properties\": {\n \"syntax\": {\n \"const\": \"tasknotes\"\n },\n \"maintain_due_date_offset\": {\n \"type\": \"boolean\"\n },\n \"reset_body_checkboxes\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"occurrencePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"identity_roles\",\n \"default_materialization\",\n \"default_next_trigger\"\n ],\n \"properties\": {\n \"identity_roles\": {\n \"const\": [\n \"recurrenceParent\",\n \"occurrenceDate\"\n ]\n },\n \"default_materialization\": {\n \"enum\": [\n \"manual\",\n \"on_completion\",\n \"rolling\"\n ]\n },\n \"default_next_trigger\": {\n \"enum\": [\n \"completion\",\n \"completion_or_skip\"\n ]\n },\n \"past_horizon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"future_horizon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"additionalProperties\": false\n },\n \"linkPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"accepted_formats\",\n \"write_format\"\n ],\n \"properties\": {\n \"accepted_formats\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"wikilink\",\n \"markdown\"\n ]\n }\n },\n \"write_format\": {\n \"enum\": [\n \"wikilink\",\n \"markdown\"\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"archivePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"archived_tag\",\n \"move_on_archive\"\n ],\n \"properties\": {\n \"archived_tag\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"move_on_archive\": {\n \"type\": \"boolean\"\n },\n \"folder\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"additionalProperties\": false\n },\n \"timeTrackingPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"auto_stop_on_complete\"\n ],\n \"properties\": {\n \"auto_stop_on_complete\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"templatingPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"enabled\",\n \"occurrence_enabled\"\n ],\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"template_path\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"occurrence_enabled\": {\n \"type\": \"boolean\"\n },\n \"occurrence_template_path\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"failure_mode\": {\n \"enum\": [\n \"error\",\n \"warning_fallback\"\n ]\n },\n \"unknown_variable_policy\": {\n \"enum\": [\n \"preserve\",\n \"empty\"\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"nlpTrigger\": {\n \"type\": \"object\",\n \"required\": [\n \"property_id\",\n \"trigger\",\n \"enabled\"\n ],\n \"properties\": {\n \"property_id\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"trigger\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"nlpPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"triggers\"\n ],\n \"properties\": {\n \"triggers\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/nlpTrigger\"\n }\n }\n },\n \"additionalProperties\": false\n }\n }\n}\n" - } - ], - "provides": [ - { - "id": "tasknotes.task", - "version": "0.3.0-rc.5", - "digest": "sha256:dde71d0d776aa0069ee627fe3c10b1a20f87ba36929a16790598ebfb4e8ebf04" - } - ] -} diff --git a/public/contracts/packs/tasknotes.task/0.3.0-rc.18.json b/public/contracts/packs/tasknotes.task/0.3.0-rc.18.json deleted file mode 100644 index 504c65a..0000000 --- a/public/contracts/packs/tasknotes.task/0.3.0-rc.18.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "manifest": { - "kind": "mdbase.type-pack", - "id": "tasknotes.task", - "version": "0.3.0-rc.18", - "name": "TaskNotes task type pack", - "description": "Portable tasks whose assignments link to person records, with a reviewed, atomic upgrade from every TaskNotes starter published before.", - "resources": [ - { - "kind": "contract", - "mode": "managed", - "source": "contracts/tasknotes.task/0.3.0-rc.5.md", - "target": "_contracts/tasknotes.task.md", - "digest": "sha256:ecadd00700e249940f4244aaa5b5985a96557d13340463ec491dfa5e89b032a4" - }, - { - "kind": "type", - "mode": "seed", - "source": "types/tasknotes-task/5.md", - "target": "_types/task.md", - "digest": "sha256:b3cf8dbe8885b331c494d2eeb36abfb052890e06b757877d655c269e666487dc", - "upgrade_from": [ - { - "digest": "sha256:2b6016c3543c0dfff491cc6262aed3afd4d672360484174042a261acd1d8ff5f", - "version": 4, - "document": "---\nkind: mdbase.type\nname: task\nversion: 4\ndescription: A task managed by TaskNotes.\nmatch:\n where:\n tags:\n contains: task\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n type: object\n additionalProperties: true\n properties:\n id:\n type: string\n minLength: 1\n title:\n type: string\n minLength: 1\n status:\n enum: &a2\n - none\n - open\n - in-progress\n - done\n - cancelled\n default: open\n priority:\n enum: &a4\n - none\n - low\n - normal\n - high\n default: normal\n due: &a1\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n scheduled: *a1\n contexts:\n type: array\n items:\n type: string\n projects:\n type: array\n items:\n type: string\n assignees:\n type: array\n items:\n type: string\n minLength: 1\n pattern: \\S\n uniqueItems: true\n attachments:\n type: array\n items:\n type: string\n minLength: 1\n uniqueItems: true\n timeEstimate:\n type: integer\n minimum: 0\n completedDate:\n type: string\n format: date\n dateCreated:\n type: string\n format: date-time\n dateModified:\n type: string\n format: date-time\n recurrence:\n type: string\n recurrence_anchor:\n enum:\n - scheduled\n - completion\n default: scheduled\n occurrence_materialization:\n enum:\n - manual\n - on_completion\n - rolling\n default: manual\n occurrence_next_trigger:\n enum:\n - completion\n - completion_or_skip\n default: completion\n occurrence_template:\n type: string\n occurrence_past_horizon:\n type: string\n occurrence_future_horizon:\n type: string\n recurrence_parent:\n type: string\n occurrence_date:\n type: string\n format: date\n tags:\n type: array\n items:\n type: string\n timeEntries:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n startTime:\n type: string\n format: date-time\n endTime:\n type: string\n format: date-time\n description:\n type: string\n duration:\n type: integer\n reminders:\n type: array\n items:\n oneOf:\n - type: object\n required:\n - id\n - type\n - absoluteTime\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: absolute\n description:\n type: string\n absoluteTime:\n type: string\n format: date-time\n - type: object\n required:\n - id\n - type\n - relatedTo\n - offset\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: relative\n description:\n type: string\n relatedTo:\n enum:\n - due\n - scheduled\n offset:\n type: string\n blockedBy:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n uid:\n type: string\n reltype:\n type: string\n gap:\n type: string\n required:\n - uid\n complete_instances:\n type: array\n items:\n type: string\n format: date\n skipped_instances:\n type: array\n items:\n type: string\n format: date\n icsEventId:\n type: array\n items:\n type: string\n googleCalendarEventId:\n type: string\n googleCalendarExceptionEventId:\n type: string\n googleCalendarExceptionOriginalScheduled:\n type: string\n format: date\n googleCalendarMovedOriginalDates:\n type: array\n items:\n type: string\n format: date\n tasknotes_manual_order:\n type: string\n allOf:\n - if:\n required:\n - status\n properties:\n status:\n enum: &a3\n - done\n not:\n required:\n - recurrence\n then:\n required:\n - completedDate\n required:\n - title\n - status\n - dateCreated\ncollection:\n read_defaults:\n status: open\n priority: normal\n recurrence_anchor: scheduled\n occurrence_materialization: manual\n occurrence_next_trigger: completion\n links:\n projects[]:\n target_type: any\n validate_exists: false\n assignees[]:\n validate_exists: false\n attachments[]:\n validate_exists: false\n occurrence_template:\n target_type: any\n validate_exists: false\n recurrence_parent:\n target_type: task\n validate_exists: false\n blockedBy[].uid:\n target_type: task\n validate_exists: false\n path:\n runtime: tasknotes\n template: \"{{zettel}}\"\n folder: tasks\n generated_by: tasknotes.filename.create\n display:\n name_field: title\n unique:\n - field: id\n scope: type\nlifecycle:\n on_create:\n set:\n id:\n uuid: true\n dateCreated:\n now: true\n dateModified:\n now: true\n on_update:\n set:\n dateModified:\n now: true\nimplements:\n - contract: tasknotes.task\n version: 0.3.0-rc.5\n fields:\n id: id\n title: title\n status: status\n priority: priority\n due: due\n scheduled: scheduled\n contexts: contexts\n projects: projects\n assignees: assignees\n attachments: attachments\n timeEstimate: timeEstimate\n completedDate: completedDate\n dateCreated: dateCreated\n dateModified: dateModified\n recurrence: recurrence\n recurrenceAnchor: recurrence_anchor\n occurrenceMaterialization: occurrence_materialization\n occurrenceNextTrigger: occurrence_next_trigger\n occurrenceTemplate: occurrence_template\n occurrencePastHorizon: occurrence_past_horizon\n occurrenceFutureHorizon: occurrence_future_horizon\n recurrenceParent: recurrence_parent\n occurrenceDate: occurrence_date\n tags: tags\n timeEntries: timeEntries\n reminders: reminders\n blockedBy: blockedBy\n completeInstances: complete_instances\n skippedInstances: skipped_instances\n icsEventId: icsEventId\n googleCalendarEventId: googleCalendarEventId\n googleCalendarExceptionEventId: googleCalendarExceptionEventId\n googleCalendarExceptionOriginalScheduled: googleCalendarExceptionOriginalScheduled\n googleCalendarMovedOriginalDates: googleCalendarMovedOriginalDates\n sortOrder: tasknotes_manual_order\n binding:\n profiles:\n - core-lite\n - recurrence\n - materialized-occurrences\n capabilities:\n - dependencies\n - reminders\n - attachments\n - links\n - time-tracking\n - materialized-occurrences\n - archive\n - templating\n title:\n storage: frontmatter\n filename_format: zettel\n status:\n values: *a2\n default: open\n completed_values: *a3\n skipped_values:\n - cancelled\n default_skipped: cancelled\n definitions:\n - value: none\n label: None\n color: \"#94a3b8\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 0\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: open\n label: Open\n color: \"#64748b\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 1\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: in-progress\n label: In progress\n color: \"#3b82f6\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 2\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: done\n label: Done\n color: \"#22c55e\"\n is_completed: true\n is_skipped: false\n exclude_from_cycle: false\n order: 3\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: cancelled\n label: Cancelled\n color: \"#94a3b8\"\n is_completed: false\n is_skipped: true\n exclude_from_cycle: true\n order: 4\n auto_archive: false\n auto_archive_delay_minutes: 5\n priority:\n values: *a4\n default: normal\n definitions:\n - value: none\n label: None\n color: \"#94a3b8\"\n weight: 0\n - value: low\n label: Low\n color: \"#3b82f6\"\n weight: 1\n - value: normal\n label: Normal\n color: \"#f59e0b\"\n weight: 2\n - value: high\n label: High\n color: \"#ef4444\"\n weight: 3\n recurrence:\n syntax: tasknotes\n maintain_due_date_offset: true\n reset_body_checkboxes: false\n occurrences:\n identity_roles:\n - recurrenceParent\n - occurrenceDate\n default_materialization: manual\n default_next_trigger: completion\n past_horizon: P0D\n future_horizon: P14D\n links:\n accepted_formats:\n - wikilink\n - markdown\n write_format: wikilink\n archive:\n archived_tag: archived\n move_on_archive: false\n time_tracking:\n auto_stop_on_complete: false\n templating:\n enabled: false\n occurrence_enabled: false\nx-tasknotes-generator:\n managed_fields:\n - assignees\n - attachments\n - blockedBy\n - complete_instances\n - completedDate\n - contexts\n - dateCreated\n - dateModified\n - due\n - googleCalendarEventId\n - googleCalendarExceptionEventId\n - googleCalendarExceptionOriginalScheduled\n - googleCalendarMovedOriginalDates\n - icsEventId\n - id\n - occurrence_date\n - occurrence_future_horizon\n - occurrence_materialization\n - occurrence_next_trigger\n - occurrence_past_horizon\n - occurrence_template\n - priority\n - projects\n - recurrence\n - recurrence_anchor\n - recurrence_parent\n - reminders\n - scheduled\n - skipped_instances\n - status\n - tags\n - tasknotes_manual_order\n - timeEntries\n - timeEstimate\n - title\n---\n# Task\n\nTask records live under `tasks/`.\n" - }, - { - "digest": "sha256:02d1a2a04f26937dd7eec3cde3070dd770c73625e06f386d6214044d176788dd", - "version": 3, - "document": "---\nkind: mdbase.type\nname: task\nversion: 3\ndescription: A task managed by TaskNotes.\nmatch:\n where:\n tags:\n contains: task\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n type: object\n additionalProperties: true\n properties:\n id:\n type: string\n minLength: 1\n title:\n type: string\n minLength: 1\n status:\n enum: &a1\n - none\n - open\n - in-progress\n - done\n default: open\n priority:\n enum: &a3\n - none\n - low\n - normal\n - high\n default: normal\n due:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n scheduled:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n contexts:\n type: array\n items:\n type: string\n projects:\n type: array\n items:\n type: string\n assignees:\n type: array\n items:\n type: string\n minLength: 1\n pattern: \\S\n uniqueItems: true\n attachments:\n type: array\n items:\n type: string\n minLength: 1\n uniqueItems: true\n timeEstimate:\n type: integer\n minimum: 0\n completedDate:\n type: string\n format: date\n dateCreated:\n type: string\n format: date-time\n dateModified:\n type: string\n format: date-time\n recurrence:\n type: string\n recurrence_anchor:\n enum:\n - scheduled\n - completion\n default: scheduled\n occurrence_materialization:\n enum:\n - manual\n - on_completion\n - rolling\n default: manual\n occurrence_next_trigger:\n enum:\n - completion\n - completion_or_skip\n default: completion\n occurrence_template:\n type: string\n occurrence_past_horizon:\n type: string\n occurrence_future_horizon:\n type: string\n recurrence_parent:\n type: string\n occurrence_date:\n type: string\n format: date\n tags:\n type: array\n items:\n type: string\n timeEntries:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n startTime:\n type: string\n format: date-time\n endTime:\n type: string\n format: date-time\n description:\n type: string\n duration:\n type: integer\n reminders:\n type: array\n items:\n oneOf:\n - type: object\n required:\n - id\n - type\n - absoluteTime\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: absolute\n description:\n type: string\n absoluteTime:\n type: string\n format: date-time\n - type: object\n required:\n - id\n - type\n - relatedTo\n - offset\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: relative\n description:\n type: string\n relatedTo:\n enum:\n - due\n - scheduled\n offset:\n type: string\n blockedBy:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n uid:\n type: string\n reltype:\n type: string\n gap:\n type: string\n required:\n - uid\n complete_instances:\n type: array\n items:\n type: string\n format: date\n skipped_instances:\n type: array\n items:\n type: string\n format: date\n icsEventId:\n type: array\n items:\n type: string\n googleCalendarEventId:\n type: string\n googleCalendarExceptionEventId:\n type: string\n googleCalendarExceptionOriginalScheduled:\n type: string\n format: date\n googleCalendarMovedOriginalDates:\n type: array\n items:\n type: string\n format: date\n tasknotes_manual_order:\n type: string\n allOf:\n - if:\n required:\n - status\n properties:\n status:\n enum: &a2\n - done\n not:\n required:\n - recurrence\n then:\n required:\n - completedDate\n required:\n - title\n - status\n - dateCreated\ncollection:\n read_defaults:\n status: open\n priority: normal\n recurrence_anchor: scheduled\n occurrence_materialization: manual\n occurrence_next_trigger: completion\n links:\n projects[]:\n target_type: any\n validate_exists: false\n assignees[]:\n validate_exists: false\n attachments[]:\n validate_exists: false\n occurrence_template:\n target_type: any\n validate_exists: false\n recurrence_parent:\n target_type: task\n validate_exists: false\n blockedBy[].uid:\n target_type: task\n validate_exists: false\n path:\n runtime: tasknotes\n template: \"{{zettel}}\"\n folder: tasks\n generated_by: tasknotes.filename.create\n display:\n name_field: title\n unique:\n - field: id\n scope: type\nlifecycle:\n on_create:\n set:\n id:\n uuid: true\n dateCreated:\n now: true\n dateModified:\n now: true\n on_update:\n set:\n dateModified:\n now: true\nimplements:\n - contract: tasknotes.task\n version: 0.3.0-rc.5\n fields:\n id: id\n title: title\n status: status\n priority: priority\n due: due\n scheduled: scheduled\n contexts: contexts\n projects: projects\n assignees: assignees\n attachments: attachments\n timeEstimate: timeEstimate\n completedDate: completedDate\n dateCreated: dateCreated\n dateModified: dateModified\n recurrence: recurrence\n recurrenceAnchor: recurrence_anchor\n occurrenceMaterialization: occurrence_materialization\n occurrenceNextTrigger: occurrence_next_trigger\n occurrenceTemplate: occurrence_template\n occurrencePastHorizon: occurrence_past_horizon\n occurrenceFutureHorizon: occurrence_future_horizon\n recurrenceParent: recurrence_parent\n occurrenceDate: occurrence_date\n tags: tags\n timeEntries: timeEntries\n reminders: reminders\n blockedBy: blockedBy\n completeInstances: complete_instances\n skippedInstances: skipped_instances\n icsEventId: icsEventId\n googleCalendarEventId: googleCalendarEventId\n googleCalendarExceptionEventId: googleCalendarExceptionEventId\n googleCalendarExceptionOriginalScheduled: googleCalendarExceptionOriginalScheduled\n googleCalendarMovedOriginalDates: googleCalendarMovedOriginalDates\n sortOrder: tasknotes_manual_order\n binding:\n profiles:\n - core-lite\n - recurrence\n - templating\n - materialized-occurrences\n - extended\n capabilities:\n - dependencies\n - reminders\n - attachments\n - links\n - time-tracking\n - materialized-occurrences\n - archive\n - templating\n title:\n storage: frontmatter\n filename_format: zettel\n status:\n values: *a1\n default: open\n completed_values: *a2\n skipped_values: []\n definitions:\n - value: none\n label: None\n color: \"#cccccc\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 0\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: open\n label: Open\n color: \"#808080\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 1\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: in-progress\n label: In progress\n color: \"#0066cc\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 2\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: done\n label: Done\n color: \"#00aa00\"\n is_completed: true\n is_skipped: false\n exclude_from_cycle: false\n order: 3\n auto_archive: false\n auto_archive_delay_minutes: 5\n priority:\n values: *a3\n default: normal\n definitions:\n - value: none\n label: None\n color: \"#cccccc\"\n weight: 0\n - value: low\n label: Low\n color: \"#00aa00\"\n weight: 1\n - value: normal\n label: Normal\n color: \"#ffaa00\"\n weight: 2\n - value: high\n label: High\n color: \"#ff0000\"\n weight: 3\n recurrence:\n syntax: tasknotes\n maintain_due_date_offset: true\n reset_body_checkboxes: false\n occurrences:\n identity_roles:\n - recurrenceParent\n - occurrenceDate\n default_materialization: manual\n default_next_trigger: completion\n past_horizon: P0D\n future_horizon: P14D\n links:\n accepted_formats:\n - wikilink\n - markdown\n write_format: wikilink\n archive:\n archived_tag: archived\n move_on_archive: false\n time_tracking:\n auto_stop_on_complete: false\n templating:\n enabled: false\n occurrence_enabled: false\nx-tasknotes-generator:\n managed_fields:\n - assignees\n - attachments\n - blockedBy\n - complete_instances\n - completedDate\n - contexts\n - dateCreated\n - dateModified\n - due\n - googleCalendarEventId\n - googleCalendarExceptionEventId\n - googleCalendarExceptionOriginalScheduled\n - googleCalendarMovedOriginalDates\n - icsEventId\n - id\n - occurrence_date\n - occurrence_future_horizon\n - occurrence_materialization\n - occurrence_next_trigger\n - occurrence_past_horizon\n - occurrence_template\n - priority\n - projects\n - recurrence\n - recurrence_anchor\n - recurrence_parent\n - reminders\n - scheduled\n - skipped_instances\n - status\n - tags\n - tasknotes_manual_order\n - timeEntries\n - timeEstimate\n - title\n---\n\n# Task\n\nThis type definition implements the TaskNotes contract for this mdbase collection.\nIts JSON Schema describes persisted task frontmatter; collection and lifecycle\nmetadata describe generic mdbase behavior; `implements` maps the portable\nTaskNotes task view and supplies TaskNotes behavior.\n\nChanges made here are loaded by TaskNotes. Portable changes made in TaskNotes\nsettings are written back while unknown extensions are preserved.\n" - }, - { - "digest": "sha256:ade71117bd31e571f403511c48d432bab7a05dfd25e730ca2931f3afda7f7cd5", - "version": 2, - "document": "---\nkind: mdbase.type\nname: task\nversion: 2\ndescription: A task managed by TaskNotes.\nmatch:\n where:\n tags:\n contains: task\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n type: object\n additionalProperties: true\n properties:\n id:\n type: string\n minLength: 1\n title:\n type: string\n minLength: 1\n status:\n enum: &a1\n - none\n - open\n - in-progress\n - done\n default: open\n priority:\n enum: &a3\n - none\n - low\n - normal\n - high\n default: normal\n due:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n scheduled:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n contexts:\n type: array\n items:\n type: string\n projects:\n type: array\n items:\n type: string\n assignees:\n type: array\n items:\n type: string\n minLength: 1\n pattern: \\S\n uniqueItems: true\n attachments:\n type: array\n items:\n type: string\n minLength: 1\n uniqueItems: true\n timeEstimate:\n type: integer\n minimum: 0\n completedDate:\n type: string\n format: date\n dateCreated:\n type: string\n format: date-time\n dateModified:\n type: string\n format: date-time\n recurrence:\n type: string\n recurrence_anchor:\n enum:\n - scheduled\n - completion\n default: scheduled\n occurrence_materialization:\n enum:\n - manual\n - on_completion\n - rolling\n default: manual\n occurrence_next_trigger:\n enum:\n - completion\n - completion_or_skip\n default: completion\n occurrence_template:\n type: string\n occurrence_past_horizon:\n type: string\n occurrence_future_horizon:\n type: string\n recurrence_parent:\n type: string\n occurrence_date:\n type: string\n format: date\n tags:\n type: array\n items:\n type: string\n timeEntries:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n startTime:\n type: string\n format: date-time\n endTime:\n type: string\n format: date-time\n description:\n type: string\n duration:\n type: integer\n reminders:\n type: array\n items:\n oneOf:\n - type: object\n required:\n - id\n - type\n - absoluteTime\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: absolute\n description:\n type: string\n absoluteTime:\n type: string\n format: date-time\n - type: object\n required:\n - id\n - type\n - relatedTo\n - offset\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: relative\n description:\n type: string\n relatedTo:\n enum:\n - due\n - scheduled\n offset:\n type: string\n blockedBy:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n uid:\n type: string\n reltype:\n type: string\n gap:\n type: string\n required:\n - uid\n complete_instances:\n type: array\n items:\n type: string\n format: date\n skipped_instances:\n type: array\n items:\n type: string\n format: date\n icsEventId:\n type: array\n items:\n type: string\n googleCalendarEventId:\n type: string\n googleCalendarExceptionEventId:\n type: string\n googleCalendarExceptionOriginalScheduled:\n type: string\n format: date\n googleCalendarMovedOriginalDates:\n type: array\n items:\n type: string\n format: date\n tasknotes_manual_order:\n type: string\n allOf:\n - if:\n required:\n - status\n properties:\n status:\n enum: &a2\n - done\n not:\n required:\n - recurrence\n then:\n required:\n - completedDate\n required:\n - title\n - status\n - dateCreated\ncollection:\n read_defaults:\n status: open\n priority: normal\n recurrence_anchor: scheduled\n occurrence_materialization: manual\n occurrence_next_trigger: completion\n links:\n projects[]:\n target_type: any\n validate_exists: false\n attachments[]:\n validate_exists: false\n occurrence_template:\n target_type: any\n validate_exists: false\n recurrence_parent:\n target_type: task\n validate_exists: false\n blockedBy[].uid:\n target_type: task\n validate_exists: false\n path:\n runtime: tasknotes\n template: \"{{zettel}}\"\n folder: tasks\n generated_by: tasknotes.filename.create\n display:\n name_field: title\n unique:\n - field: id\n scope: type\nlifecycle:\n on_create:\n set:\n id:\n uuid: true\n dateCreated:\n now: true\n dateModified:\n now: true\n on_update:\n set:\n dateModified:\n now: true\nimplements:\n - contract: tasknotes.task\n version: 0.3.0-rc.4\n fields:\n id: id\n title: title\n status: status\n priority: priority\n due: due\n scheduled: scheduled\n contexts: contexts\n projects: projects\n assignees: assignees\n attachments: attachments\n timeEstimate: timeEstimate\n completedDate: completedDate\n dateCreated: dateCreated\n dateModified: dateModified\n recurrence: recurrence\n recurrenceAnchor: recurrence_anchor\n occurrenceMaterialization: occurrence_materialization\n occurrenceNextTrigger: occurrence_next_trigger\n occurrenceTemplate: occurrence_template\n occurrencePastHorizon: occurrence_past_horizon\n occurrenceFutureHorizon: occurrence_future_horizon\n recurrenceParent: recurrence_parent\n occurrenceDate: occurrence_date\n tags: tags\n timeEntries: timeEntries\n reminders: reminders\n blockedBy: blockedBy\n completeInstances: complete_instances\n skippedInstances: skipped_instances\n icsEventId: icsEventId\n googleCalendarEventId: googleCalendarEventId\n googleCalendarExceptionEventId: googleCalendarExceptionEventId\n googleCalendarExceptionOriginalScheduled: googleCalendarExceptionOriginalScheduled\n googleCalendarMovedOriginalDates: googleCalendarMovedOriginalDates\n sortOrder: tasknotes_manual_order\n binding:\n profiles:\n - core-lite\n - recurrence\n - templating\n - materialized-occurrences\n - extended\n capabilities:\n - dependencies\n - reminders\n - attachments\n - links\n - time-tracking\n - materialized-occurrences\n - archive\n - templating\n title:\n storage: frontmatter\n filename_format: zettel\n status:\n values: *a1\n default: open\n completed_values: *a2\n skipped_values: []\n definitions:\n - value: none\n label: None\n color: \"#cccccc\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 0\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: open\n label: Open\n color: \"#808080\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 1\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: in-progress\n label: In progress\n color: \"#0066cc\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 2\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: done\n label: Done\n color: \"#00aa00\"\n is_completed: true\n is_skipped: false\n exclude_from_cycle: false\n order: 3\n auto_archive: false\n auto_archive_delay_minutes: 5\n priority:\n values: *a3\n default: normal\n definitions:\n - value: none\n label: None\n color: \"#cccccc\"\n weight: 0\n - value: low\n label: Low\n color: \"#00aa00\"\n weight: 1\n - value: normal\n label: Normal\n color: \"#ffaa00\"\n weight: 2\n - value: high\n label: High\n color: \"#ff0000\"\n weight: 3\n recurrence:\n syntax: tasknotes\n maintain_due_date_offset: true\n reset_body_checkboxes: false\n occurrences:\n identity_roles:\n - recurrenceParent\n - occurrenceDate\n default_materialization: manual\n default_next_trigger: completion\n past_horizon: P0D\n future_horizon: P14D\n links:\n accepted_formats:\n - wikilink\n - markdown\n write_format: wikilink\n archive:\n archived_tag: archived\n move_on_archive: false\n time_tracking:\n auto_stop_on_complete: false\n templating:\n enabled: false\n occurrence_enabled: false\nx-tasknotes-generator:\n managed_fields:\n - assignees\n - attachments\n - blockedBy\n - complete_instances\n - completedDate\n - contexts\n - dateCreated\n - dateModified\n - due\n - googleCalendarEventId\n - googleCalendarExceptionEventId\n - googleCalendarExceptionOriginalScheduled\n - googleCalendarMovedOriginalDates\n - icsEventId\n - id\n - occurrence_date\n - occurrence_future_horizon\n - occurrence_materialization\n - occurrence_next_trigger\n - occurrence_past_horizon\n - occurrence_template\n - priority\n - projects\n - recurrence\n - recurrence_anchor\n - recurrence_parent\n - reminders\n - scheduled\n - skipped_instances\n - status\n - tags\n - tasknotes_manual_order\n - timeEntries\n - timeEstimate\n - title\n---\n\n# Task\n\nThis type definition implements the TaskNotes contract for this mdbase collection.\nIts JSON Schema describes persisted task frontmatter; collection and lifecycle\nmetadata describe generic mdbase behavior; `implements` maps the portable\nTaskNotes task view and supplies TaskNotes behavior.\n\nChanges made here are loaded by TaskNotes. Portable changes made in TaskNotes\nsettings are written back while unknown extensions are preserved.\n" - }, - { - "digest": "sha256:b7f8af7b18d77859dab1f1532c1b55c08c7c39879f55e4ef2a94cb7d2d2284eb", - "version": 1, - "document": "---\nkind: mdbase.type\nname: task\nversion: 1\ndescription: A task managed by TaskNotes.\nmatch:\n where:\n tags:\n contains: task\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n type: object\n additionalProperties: true\n properties:\n id:\n type: string\n minLength: 1\n title:\n type: string\n minLength: 1\n status:\n enum: &a2\n - none\n - open\n - in-progress\n - done\n - cancelled\n default: open\n priority:\n enum: &a4\n - none\n - low\n - normal\n - high\n default: normal\n due: &a1\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n scheduled: *a1\n contexts:\n type: array\n items:\n type: string\n projects:\n type: array\n items:\n type: string\n attachments:\n type: array\n items:\n type: string\n minLength: 1\n uniqueItems: true\n timeEstimate:\n type: integer\n minimum: 0\n completedDate:\n type: string\n format: date\n dateCreated:\n type: string\n format: date-time\n dateModified:\n type: string\n format: date-time\n recurrence:\n type: string\n recurrence_anchor:\n enum:\n - scheduled\n - completion\n default: scheduled\n occurrence_materialization:\n enum:\n - manual\n - on_completion\n - rolling\n default: manual\n occurrence_next_trigger:\n enum:\n - completion\n - completion_or_skip\n default: completion\n occurrence_template:\n type: string\n occurrence_past_horizon:\n type: string\n occurrence_future_horizon:\n type: string\n recurrence_parent:\n type: string\n occurrence_date:\n type: string\n format: date\n tags:\n type: array\n items:\n type: string\n timeEntries:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n startTime:\n type: string\n format: date-time\n endTime:\n type: string\n format: date-time\n description:\n type: string\n duration:\n type: integer\n reminders:\n type: array\n items:\n oneOf:\n - type: object\n required:\n - id\n - type\n - absoluteTime\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: absolute\n description:\n type: string\n absoluteTime:\n type: string\n format: date-time\n - type: object\n required:\n - id\n - type\n - relatedTo\n - offset\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: relative\n description:\n type: string\n relatedTo:\n enum:\n - due\n - scheduled\n offset:\n type: string\n blockedBy:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n uid:\n type: string\n reltype:\n type: string\n gap:\n type: string\n required:\n - uid\n complete_instances:\n type: array\n items:\n type: string\n format: date\n skipped_instances:\n type: array\n items:\n type: string\n format: date\n icsEventId:\n type: array\n items:\n type: string\n googleCalendarEventId:\n type: string\n googleCalendarExceptionEventId:\n type: string\n googleCalendarExceptionOriginalScheduled:\n type: string\n format: date\n googleCalendarMovedOriginalDates:\n type: array\n items:\n type: string\n format: date\n tasknotes_manual_order:\n type: string\n allOf:\n - if:\n required:\n - status\n properties:\n status:\n enum: &a3\n - done\n not:\n required:\n - recurrence\n then:\n required:\n - completedDate\n required:\n - title\n - status\n - dateCreated\ncollection:\n read_defaults:\n status: open\n priority: normal\n recurrence_anchor: scheduled\n occurrence_materialization: manual\n occurrence_next_trigger: completion\n links:\n projects[]:\n target_type: any\n validate_exists: false\n attachments[]:\n validate_exists: false\n occurrence_template:\n target_type: any\n validate_exists: false\n recurrence_parent:\n target_type: task\n validate_exists: false\n blockedBy[].uid:\n target_type: task\n validate_exists: false\n path:\n runtime: tasknotes\n template: \"{{zettel}}\"\n folder: tasks\n generated_by: tasknotes.filename.create\n display:\n name_field: title\n unique:\n - field: id\n scope: type\nlifecycle:\n on_create:\n set:\n id:\n uuid: true\n dateCreated:\n now: true\n dateModified:\n now: true\n on_update:\n set:\n dateModified:\n now: true\nimplements:\n - contract: tasknotes.task\n version: 0.3.0-rc.3\n fields:\n id: id\n title: title\n status: status\n priority: priority\n due: due\n scheduled: scheduled\n contexts: contexts\n projects: projects\n attachments: attachments\n timeEstimate: timeEstimate\n completedDate: completedDate\n dateCreated: dateCreated\n dateModified: dateModified\n recurrence: recurrence\n recurrenceAnchor: recurrence_anchor\n occurrenceMaterialization: occurrence_materialization\n occurrenceNextTrigger: occurrence_next_trigger\n occurrenceTemplate: occurrence_template\n occurrencePastHorizon: occurrence_past_horizon\n occurrenceFutureHorizon: occurrence_future_horizon\n recurrenceParent: recurrence_parent\n occurrenceDate: occurrence_date\n tags: tags\n timeEntries: timeEntries\n reminders: reminders\n blockedBy: blockedBy\n completeInstances: complete_instances\n skippedInstances: skipped_instances\n icsEventId: icsEventId\n googleCalendarEventId: googleCalendarEventId\n googleCalendarExceptionEventId: googleCalendarExceptionEventId\n googleCalendarExceptionOriginalScheduled: googleCalendarExceptionOriginalScheduled\n googleCalendarMovedOriginalDates: googleCalendarMovedOriginalDates\n sortOrder: tasknotes_manual_order\n binding:\n profiles:\n - core-lite\n - recurrence\n - materialized-occurrences\n capabilities:\n - dependencies\n - reminders\n - attachments\n - links\n - time-tracking\n - materialized-occurrences\n - archive\n - templating\n title:\n storage: frontmatter\n filename_format: zettel\n status:\n values: *a2\n default: open\n completed_values: *a3\n skipped_values:\n - cancelled\n default_skipped: cancelled\n definitions:\n - value: none\n label: None\n color: \"#94a3b8\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 0\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: open\n label: Open\n color: \"#64748b\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 1\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: in-progress\n label: In progress\n color: \"#3b82f6\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 2\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: done\n label: Done\n color: \"#22c55e\"\n is_completed: true\n is_skipped: false\n exclude_from_cycle: false\n order: 3\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: cancelled\n label: Cancelled\n color: \"#94a3b8\"\n is_completed: false\n is_skipped: true\n exclude_from_cycle: true\n order: 4\n auto_archive: false\n auto_archive_delay_minutes: 5\n priority:\n values: *a4\n default: normal\n definitions:\n - value: none\n label: None\n color: \"#94a3b8\"\n weight: 0\n - value: low\n label: Low\n color: \"#3b82f6\"\n weight: 1\n - value: normal\n label: Normal\n color: \"#f59e0b\"\n weight: 2\n - value: high\n label: High\n color: \"#ef4444\"\n weight: 3\n recurrence:\n syntax: tasknotes\n maintain_due_date_offset: true\n reset_body_checkboxes: false\n occurrences:\n identity_roles:\n - recurrenceParent\n - occurrenceDate\n default_materialization: manual\n default_next_trigger: completion\n past_horizon: P0D\n future_horizon: P14D\n links:\n accepted_formats:\n - wikilink\n - markdown\n write_format: wikilink\n archive:\n archived_tag: archived\n move_on_archive: false\n time_tracking:\n auto_stop_on_complete: false\n templating:\n enabled: false\n occurrence_enabled: false\nx-tasknotes-generator:\n managed_fields:\n - attachments\n - blockedBy\n - complete_instances\n - completedDate\n - contexts\n - dateCreated\n - dateModified\n - due\n - googleCalendarEventId\n - googleCalendarExceptionEventId\n - googleCalendarExceptionOriginalScheduled\n - googleCalendarMovedOriginalDates\n - icsEventId\n - id\n - occurrence_date\n - occurrence_future_horizon\n - occurrence_materialization\n - occurrence_next_trigger\n - occurrence_past_horizon\n - occurrence_template\n - priority\n - projects\n - recurrence\n - recurrence_anchor\n - recurrence_parent\n - reminders\n - scheduled\n - skipped_instances\n - status\n - tags\n - tasknotes_manual_order\n - timeEntries\n - timeEstimate\n - title\n---\n# Task\n\nTask records live under `tasks/`.\n" - } - ] - }, - { - "kind": "schema", - "mode": "managed", - "source": "schemas/tasknotes.task/0.3.0-rc.5.schema.json", - "target": "_schemas/tasknotes/tasknotes-task.schema.json", - "digest": "sha256:aec95578a093be95cbce0fb500964e7aeaeeacc611624fc2893074637dbd4125" - }, - { - "kind": "schema", - "mode": "managed", - "source": "schemas/tasknotes.task.binding/0.3.0-rc.5.schema.json", - "target": "_schemas/tasknotes/tasknotes-task-binding.schema.json", - "digest": "sha256:5b38e8a1c426b7f7fa92d8353fe35dd98e632305cbb15ffccde387473166b267" - } - ] - }, - "resources": [ - { - "source": "contracts/tasknotes.task/0.3.0-rc.5.md", - "document": "---\nkind: mdbase.contract\ncontract_type: record\nid: tasknotes.task\nversion: 0.3.0-rc.5\nname: TaskNotes task\ndescription: Portable task data and behavior defined by tasknotes-spec 0.3.0-rc.5.\nrecord_schema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n $id: https://tasknotes.dev/schemas/tasknotes-task.schema.json\n title: TaskNotes portable task view\n description: The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.5 record contract.\n type: object\n required:\n - status\n - dateCreated\n additionalProperties: false\n properties:\n id:\n type: string\n minLength: 1\n title:\n type: string\n minLength: 1\n status:\n type: string\n minLength: 1\n priority:\n type: string\n minLength: 1\n due:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n scheduled:\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n contexts:\n type: array\n items:\n type: string\n projects:\n type: array\n items:\n type: string\n assignees:\n type: array\n uniqueItems: true\n items:\n type: string\n minLength: 1\n pattern: \\S\n description: Links to records implementing mdbase.person, such as [[Alex Rivera]]. Implementing types declare this field in collection.links. These references never grant collection access.\n attachments:\n type: array\n uniqueItems: true\n items:\n type: string\n minLength: 1\n timeEstimate:\n type: integer\n minimum: 0\n completedDate:\n type: string\n format: date\n dateCreated:\n type: string\n format: date-time\n dateModified:\n type: string\n format: date-time\n recurrence:\n type: string\n recurrenceAnchor:\n enum:\n - scheduled\n - completion\n recurrenceParent:\n type: string\n occurrenceDate:\n type: string\n format: date\n occurrenceMaterialization:\n enum:\n - manual\n - on_completion\n - rolling\n occurrenceNextTrigger:\n enum:\n - completion\n - completion_or_skip\n occurrenceTemplate:\n type: string\n occurrencePastHorizon:\n type: string\n occurrenceFutureHorizon:\n type: string\n tags:\n type: array\n items:\n type: string\n timeEntries:\n type: array\n items:\n type: object\n reminders:\n type: array\n items:\n type: object\n blockedBy:\n type: array\n items:\n type: object\n completeInstances:\n type: array\n items:\n type: string\n format: date\n skippedInstances:\n type: array\n items:\n type: string\n format: date\n icsEventId:\n type: array\n items:\n type: string\n googleCalendarEventId:\n type: string\n googleCalendarExceptionEventId:\n type: string\n googleCalendarExceptionOriginalScheduled:\n type: string\n format: date\n googleCalendarMovedOriginalDates:\n type: array\n items:\n type: string\n format: date\n sortOrder:\n type: string\nbinding_schema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n $id: https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json\n title: TaskNotes task data-contract binding\n description: Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3.\n type: object\n required:\n - profiles\n - capabilities\n - title\n - status\n - priority\n - recurrence\n - occurrences\n - links\n - archive\n - time_tracking\n - templating\n properties:\n profiles:\n type: array\n minItems: 1\n uniqueItems: true\n items:\n enum:\n - core-lite\n - recurrence\n - templating\n - materialized-occurrences\n - extended\n capabilities:\n type: array\n uniqueItems: true\n items:\n enum:\n - dependencies\n - reminders\n - attachments\n - links\n - time-tracking\n - materialized-occurrences\n - rename\n - archive\n - batch\n - concurrency\n - dry-run\n - migration\n - templating\n title:\n $ref: \"#/$defs/titlePolicy\"\n status:\n $ref: \"#/$defs/statusPolicy\"\n priority:\n $ref: \"#/$defs/priorityPolicy\"\n recurrence:\n $ref: \"#/$defs/recurrencePolicy\"\n occurrences:\n $ref: \"#/$defs/occurrencePolicy\"\n links:\n $ref: \"#/$defs/linkPolicy\"\n archive:\n $ref: \"#/$defs/archivePolicy\"\n time_tracking:\n $ref: \"#/$defs/timeTrackingPolicy\"\n templating:\n $ref: \"#/$defs/templatingPolicy\"\n nlp:\n $ref: \"#/$defs/nlpPolicy\"\n additionalProperties: false\n $defs:\n nonEmptyString:\n type: string\n minLength: 1\n stringSet:\n type: array\n uniqueItems: true\n items:\n $ref: \"#/$defs/nonEmptyString\"\n titlePolicy:\n type: object\n required:\n - storage\n properties:\n storage:\n enum:\n - filename\n - frontmatter\n filename_format:\n enum:\n - title\n - zettel\n - timestamp\n - uuid\n - custom\n custom_filename_template:\n $ref: \"#/$defs/nonEmptyString\"\n allOf:\n - if:\n properties:\n filename_format:\n const: custom\n required:\n - filename_format\n then:\n properties:\n custom_filename_template:\n $ref: \"#/$defs/nonEmptyString\"\n required:\n - custom_filename_template\n additionalProperties: true\n statusDefinition:\n type: object\n required:\n - value\n - label\n - color\n - is_completed\n - is_skipped\n - exclude_from_cycle\n - order\n - auto_archive\n - auto_archive_delay_minutes\n properties:\n value:\n $ref: \"#/$defs/nonEmptyString\"\n label:\n type: string\n color:\n type: string\n icon:\n $ref: \"#/$defs/nonEmptyString\"\n is_completed:\n type: boolean\n is_skipped:\n type: boolean\n exclude_from_cycle:\n type: boolean\n next_status:\n $ref: \"#/$defs/nonEmptyString\"\n order:\n type: number\n auto_archive:\n type: boolean\n auto_archive_delay_minutes:\n type: number\n minimum: 0\n additionalProperties: true\n statusPolicy:\n type: object\n required:\n - values\n - default\n - completed_values\n - definitions\n properties:\n values:\n $ref: \"#/$defs/stringSet\"\n default:\n $ref: \"#/$defs/nonEmptyString\"\n completed_values:\n $ref: \"#/$defs/stringSet\"\n skipped_values:\n $ref: \"#/$defs/stringSet\"\n default_skipped:\n $ref: \"#/$defs/nonEmptyString\"\n definitions:\n type: array\n items:\n $ref: \"#/$defs/statusDefinition\"\n additionalProperties: false\n priorityDefinition:\n type: object\n required:\n - value\n - label\n - color\n - weight\n properties:\n value:\n $ref: \"#/$defs/nonEmptyString\"\n label:\n type: string\n color:\n type: string\n icon:\n $ref: \"#/$defs/nonEmptyString\"\n weight:\n type: number\n additionalProperties: true\n priorityPolicy:\n type: object\n required:\n - values\n - default\n - definitions\n properties:\n values:\n $ref: \"#/$defs/stringSet\"\n default:\n $ref: \"#/$defs/nonEmptyString\"\n definitions:\n type: array\n items:\n $ref: \"#/$defs/priorityDefinition\"\n additionalProperties: false\n recurrencePolicy:\n type: object\n required:\n - syntax\n - maintain_due_date_offset\n - reset_body_checkboxes\n properties:\n syntax:\n const: tasknotes\n maintain_due_date_offset:\n type: boolean\n reset_body_checkboxes:\n type: boolean\n additionalProperties: false\n occurrencePolicy:\n type: object\n required:\n - identity_roles\n - default_materialization\n - default_next_trigger\n properties:\n identity_roles:\n const:\n - recurrenceParent\n - occurrenceDate\n default_materialization:\n enum:\n - manual\n - on_completion\n - rolling\n default_next_trigger:\n enum:\n - completion\n - completion_or_skip\n past_horizon:\n $ref: \"#/$defs/nonEmptyString\"\n future_horizon:\n $ref: \"#/$defs/nonEmptyString\"\n additionalProperties: false\n linkPolicy:\n type: object\n required:\n - accepted_formats\n - write_format\n properties:\n accepted_formats:\n type: array\n minItems: 1\n uniqueItems: true\n items:\n enum:\n - wikilink\n - markdown\n write_format:\n enum:\n - wikilink\n - markdown\n additionalProperties: false\n archivePolicy:\n type: object\n required:\n - archived_tag\n - move_on_archive\n properties:\n archived_tag:\n $ref: \"#/$defs/nonEmptyString\"\n move_on_archive:\n type: boolean\n folder:\n $ref: \"#/$defs/nonEmptyString\"\n additionalProperties: false\n timeTrackingPolicy:\n type: object\n required:\n - auto_stop_on_complete\n properties:\n auto_stop_on_complete:\n type: boolean\n additionalProperties: false\n templatingPolicy:\n type: object\n required:\n - enabled\n - occurrence_enabled\n properties:\n enabled:\n type: boolean\n template_path:\n $ref: \"#/$defs/nonEmptyString\"\n occurrence_enabled:\n type: boolean\n occurrence_template_path:\n $ref: \"#/$defs/nonEmptyString\"\n failure_mode:\n enum:\n - error\n - warning_fallback\n unknown_variable_policy:\n enum:\n - preserve\n - empty\n additionalProperties: false\n nlpTrigger:\n type: object\n required:\n - property_id\n - trigger\n - enabled\n properties:\n property_id:\n $ref: \"#/$defs/nonEmptyString\"\n trigger:\n $ref: \"#/$defs/nonEmptyString\"\n enabled:\n type: boolean\n additionalProperties: false\n nlpPolicy:\n type: object\n required:\n - triggers\n properties:\n triggers:\n type: array\n items:\n $ref: \"#/$defs/nlpTrigger\"\n additionalProperties: false\n---\n\n# TaskNotes task contract\n\nTypes implement this contract through `implements`; applications consume\nthe normalized contract view rather than assuming frontmatter names.\n" - }, - { - "source": "types/tasknotes-task/5.md", - "document": "---\nkind: mdbase.type\nname: task\nversion: 4\ndescription: A task managed by TaskNotes.\nmatch:\n where:\n tags:\n contains: task\nschema:\n dialect: json-schema-2020-12\n value:\n $schema: https://json-schema.org/draft/2020-12/schema\n type: object\n additionalProperties: true\n properties:\n id:\n type: string\n minLength: 1\n title:\n type: string\n minLength: 1\n status:\n enum: &a2\n - none\n - open\n - in-progress\n - done\n - cancelled\n default: open\n priority:\n enum: &a4\n - none\n - low\n - normal\n - high\n default: normal\n due: &a1\n anyOf:\n - type: string\n format: date\n - type: string\n format: date-time\n scheduled: *a1\n contexts:\n type: array\n items:\n type: string\n projects:\n type: array\n items:\n type: string\n assignees:\n type: array\n items:\n type: string\n minLength: 1\n pattern: \\S\n uniqueItems: true\n attachments:\n type: array\n items:\n type: string\n minLength: 1\n uniqueItems: true\n timeEstimate:\n type: integer\n minimum: 0\n completedDate:\n type: string\n format: date\n dateCreated:\n type: string\n format: date-time\n dateModified:\n type: string\n format: date-time\n recurrence:\n type: string\n recurrence_anchor:\n enum:\n - scheduled\n - completion\n default: scheduled\n occurrence_materialization:\n enum:\n - manual\n - on_completion\n - rolling\n default: manual\n occurrence_next_trigger:\n enum:\n - completion\n - completion_or_skip\n default: completion\n occurrence_template:\n type: string\n occurrence_past_horizon:\n type: string\n occurrence_future_horizon:\n type: string\n recurrence_parent:\n type: string\n occurrence_date:\n type: string\n format: date\n tags:\n type: array\n items:\n type: string\n timeEntries:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n startTime:\n type: string\n format: date-time\n endTime:\n type: string\n format: date-time\n description:\n type: string\n duration:\n type: integer\n reminders:\n type: array\n items:\n oneOf:\n - type: object\n required:\n - id\n - type\n - absoluteTime\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: absolute\n description:\n type: string\n absoluteTime:\n type: string\n format: date-time\n - type: object\n required:\n - id\n - type\n - relatedTo\n - offset\n additionalProperties: false\n properties:\n id:\n type: string\n type:\n const: relative\n description:\n type: string\n relatedTo:\n enum:\n - due\n - scheduled\n offset:\n type: string\n blockedBy:\n type: array\n items:\n type: object\n additionalProperties: false\n properties:\n uid:\n type: string\n reltype:\n type: string\n gap:\n type: string\n required:\n - uid\n complete_instances:\n type: array\n items:\n type: string\n format: date\n skipped_instances:\n type: array\n items:\n type: string\n format: date\n icsEventId:\n type: array\n items:\n type: string\n googleCalendarEventId:\n type: string\n googleCalendarExceptionEventId:\n type: string\n googleCalendarExceptionOriginalScheduled:\n type: string\n format: date\n googleCalendarMovedOriginalDates:\n type: array\n items:\n type: string\n format: date\n tasknotes_manual_order:\n type: string\n allOf:\n - if:\n required:\n - status\n properties:\n status:\n enum: &a3\n - done\n not:\n required:\n - recurrence\n then:\n required:\n - completedDate\n required:\n - title\n - status\n - dateCreated\ncollection:\n read_defaults:\n status: open\n priority: normal\n recurrence_anchor: scheduled\n occurrence_materialization: manual\n occurrence_next_trigger: completion\n links:\n projects[]:\n target_type: any\n validate_exists: false\n assignees[]:\n validate_exists: false\n attachments[]:\n validate_exists: false\n occurrence_template:\n target_type: any\n validate_exists: false\n recurrence_parent:\n target_type: task\n validate_exists: false\n blockedBy[].uid:\n target_type: task\n validate_exists: false\n path:\n runtime: tasknotes\n template: \"{{zettel}}\"\n folder: tasks\n generated_by: tasknotes.filename.create\n display:\n name_field: title\n unique:\n - field: id\n scope: type\nlifecycle:\n on_create:\n set:\n id:\n uuid: true\n dateCreated:\n now: true\n dateModified:\n now: true\n on_update:\n set:\n dateModified:\n now: true\nimplements:\n - contract: tasknotes.task\n version: 0.3.0-rc.5\n fields:\n id: id\n title: title\n status: status\n priority: priority\n due: due\n scheduled: scheduled\n contexts: contexts\n projects: projects\n assignees: assignees\n attachments: attachments\n timeEstimate: timeEstimate\n completedDate: completedDate\n dateCreated: dateCreated\n dateModified: dateModified\n recurrence: recurrence\n recurrenceAnchor: recurrence_anchor\n occurrenceMaterialization: occurrence_materialization\n occurrenceNextTrigger: occurrence_next_trigger\n occurrenceTemplate: occurrence_template\n occurrencePastHorizon: occurrence_past_horizon\n occurrenceFutureHorizon: occurrence_future_horizon\n recurrenceParent: recurrence_parent\n occurrenceDate: occurrence_date\n tags: tags\n timeEntries: timeEntries\n reminders: reminders\n blockedBy: blockedBy\n completeInstances: complete_instances\n skippedInstances: skipped_instances\n icsEventId: icsEventId\n googleCalendarEventId: googleCalendarEventId\n googleCalendarExceptionEventId: googleCalendarExceptionEventId\n googleCalendarExceptionOriginalScheduled: googleCalendarExceptionOriginalScheduled\n googleCalendarMovedOriginalDates: googleCalendarMovedOriginalDates\n sortOrder: tasknotes_manual_order\n binding:\n profiles:\n - core-lite\n - recurrence\n - materialized-occurrences\n capabilities:\n - dependencies\n - reminders\n - attachments\n - links\n - time-tracking\n - materialized-occurrences\n - archive\n - templating\n title:\n storage: frontmatter\n filename_format: zettel\n status:\n values: *a2\n default: open\n completed_values: *a3\n skipped_values:\n - cancelled\n default_skipped: cancelled\n definitions:\n - value: none\n label: None\n color: \"#94a3b8\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 0\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: open\n label: Open\n color: \"#64748b\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 1\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: in-progress\n label: In progress\n color: \"#3b82f6\"\n is_completed: false\n is_skipped: false\n exclude_from_cycle: false\n order: 2\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: done\n label: Done\n color: \"#22c55e\"\n is_completed: true\n is_skipped: false\n exclude_from_cycle: false\n order: 3\n auto_archive: false\n auto_archive_delay_minutes: 5\n - value: cancelled\n label: Cancelled\n color: \"#94a3b8\"\n is_completed: false\n is_skipped: true\n exclude_from_cycle: true\n order: 4\n auto_archive: false\n auto_archive_delay_minutes: 5\n priority:\n values: *a4\n default: normal\n definitions:\n - value: none\n label: None\n color: \"#94a3b8\"\n weight: 0\n - value: low\n label: Low\n color: \"#3b82f6\"\n weight: 1\n - value: normal\n label: Normal\n color: \"#f59e0b\"\n weight: 2\n - value: high\n label: High\n color: \"#ef4444\"\n weight: 3\n recurrence:\n syntax: tasknotes\n maintain_due_date_offset: true\n reset_body_checkboxes: false\n occurrences:\n identity_roles:\n - recurrenceParent\n - occurrenceDate\n default_materialization: manual\n default_next_trigger: completion\n past_horizon: P0D\n future_horizon: P14D\n links:\n accepted_formats:\n - wikilink\n - markdown\n write_format: wikilink\n archive:\n archived_tag: archived\n move_on_archive: false\n time_tracking:\n auto_stop_on_complete: false\n templating:\n enabled: false\n occurrence_enabled: false\nx-tasknotes-generator:\n managed_fields:\n - attachments\n - blockedBy\n - complete_instances\n - completedDate\n - contexts\n - dateCreated\n - dateModified\n - due\n - googleCalendarEventId\n - googleCalendarExceptionEventId\n - googleCalendarExceptionOriginalScheduled\n - googleCalendarMovedOriginalDates\n - icsEventId\n - id\n - occurrence_date\n - occurrence_future_horizon\n - occurrence_materialization\n - occurrence_next_trigger\n - occurrence_past_horizon\n - occurrence_template\n - priority\n - projects\n - recurrence\n - recurrence_anchor\n - recurrence_parent\n - reminders\n - scheduled\n - skipped_instances\n - status\n - tags\n - tasknotes_manual_order\n - timeEntries\n - timeEstimate\n - title\n---\n# Task\n\nTask records live under `tasks/`.\n" - }, - { - "source": "schemas/tasknotes.task/0.3.0-rc.5.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://tasknotes.dev/schemas/tasknotes-task.schema.json\",\n \"title\": \"TaskNotes portable task view\",\n \"description\": \"The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.5 record contract.\",\n \"type\": \"object\",\n \"required\": [\n \"status\",\n \"dateCreated\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"title\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"status\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"priority\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"due\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n ]\n },\n \"scheduled\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n ]\n },\n \"contexts\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"projects\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"assignees\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"pattern\": \"\\\\S\"\n },\n \"description\": \"Links to records implementing mdbase.person, such as [[Alex Rivera]]. Implementing types declare this field in collection.links. These references never grant collection access.\"\n },\n \"attachments\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"timeEstimate\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"completedDate\": {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n \"dateCreated\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"dateModified\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"recurrence\": {\n \"type\": \"string\"\n },\n \"recurrenceAnchor\": {\n \"enum\": [\n \"scheduled\",\n \"completion\"\n ]\n },\n \"recurrenceParent\": {\n \"type\": \"string\"\n },\n \"occurrenceDate\": {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n \"occurrenceMaterialization\": {\n \"enum\": [\n \"manual\",\n \"on_completion\",\n \"rolling\"\n ]\n },\n \"occurrenceNextTrigger\": {\n \"enum\": [\n \"completion\",\n \"completion_or_skip\"\n ]\n },\n \"occurrenceTemplate\": {\n \"type\": \"string\"\n },\n \"occurrencePastHorizon\": {\n \"type\": \"string\"\n },\n \"occurrenceFutureHorizon\": {\n \"type\": \"string\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"timeEntries\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"reminders\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"blockedBy\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"completeInstances\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"date\"\n }\n },\n \"skippedInstances\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"date\"\n }\n },\n \"icsEventId\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"googleCalendarEventId\": {\n \"type\": \"string\"\n },\n \"googleCalendarExceptionEventId\": {\n \"type\": \"string\"\n },\n \"googleCalendarExceptionOriginalScheduled\": {\n \"type\": \"string\",\n \"format\": \"date\"\n },\n \"googleCalendarMovedOriginalDates\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"date\"\n }\n },\n \"sortOrder\": {\n \"type\": \"string\"\n }\n }\n}\n" - }, - { - "source": "schemas/tasknotes.task.binding/0.3.0-rc.5.schema.json", - "document": "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json\",\n \"title\": \"TaskNotes task data-contract binding\",\n \"description\": \"Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3.\",\n \"type\": \"object\",\n \"required\": [\n \"profiles\",\n \"capabilities\",\n \"title\",\n \"status\",\n \"priority\",\n \"recurrence\",\n \"occurrences\",\n \"links\",\n \"archive\",\n \"time_tracking\",\n \"templating\"\n ],\n \"properties\": {\n \"profiles\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"core-lite\",\n \"recurrence\",\n \"templating\",\n \"materialized-occurrences\",\n \"extended\"\n ]\n }\n },\n \"capabilities\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"dependencies\",\n \"reminders\",\n \"attachments\",\n \"links\",\n \"time-tracking\",\n \"materialized-occurrences\",\n \"rename\",\n \"archive\",\n \"batch\",\n \"concurrency\",\n \"dry-run\",\n \"migration\",\n \"templating\"\n ]\n }\n },\n \"title\": {\n \"$ref\": \"#/$defs/titlePolicy\"\n },\n \"status\": {\n \"$ref\": \"#/$defs/statusPolicy\"\n },\n \"priority\": {\n \"$ref\": \"#/$defs/priorityPolicy\"\n },\n \"recurrence\": {\n \"$ref\": \"#/$defs/recurrencePolicy\"\n },\n \"occurrences\": {\n \"$ref\": \"#/$defs/occurrencePolicy\"\n },\n \"links\": {\n \"$ref\": \"#/$defs/linkPolicy\"\n },\n \"archive\": {\n \"$ref\": \"#/$defs/archivePolicy\"\n },\n \"time_tracking\": {\n \"$ref\": \"#/$defs/timeTrackingPolicy\"\n },\n \"templating\": {\n \"$ref\": \"#/$defs/templatingPolicy\"\n },\n \"nlp\": {\n \"$ref\": \"#/$defs/nlpPolicy\"\n }\n },\n \"additionalProperties\": false,\n \"$defs\": {\n \"nonEmptyString\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"stringSet\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"titlePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"storage\"\n ],\n \"properties\": {\n \"storage\": {\n \"enum\": [\n \"filename\",\n \"frontmatter\"\n ]\n },\n \"filename_format\": {\n \"enum\": [\n \"title\",\n \"zettel\",\n \"timestamp\",\n \"uuid\",\n \"custom\"\n ]\n },\n \"custom_filename_template\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": {\n \"filename_format\": {\n \"const\": \"custom\"\n }\n },\n \"required\": [\n \"filename_format\"\n ]\n },\n \"then\": {\n \"properties\": {\n \"custom_filename_template\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"required\": [\n \"custom_filename_template\"\n ]\n }\n }\n ],\n \"additionalProperties\": true\n },\n \"statusDefinition\": {\n \"type\": \"object\",\n \"required\": [\n \"value\",\n \"label\",\n \"color\",\n \"is_completed\",\n \"is_skipped\",\n \"exclude_from_cycle\",\n \"order\",\n \"auto_archive\",\n \"auto_archive_delay_minutes\"\n ],\n \"properties\": {\n \"value\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"is_completed\": {\n \"type\": \"boolean\"\n },\n \"is_skipped\": {\n \"type\": \"boolean\"\n },\n \"exclude_from_cycle\": {\n \"type\": \"boolean\"\n },\n \"next_status\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"order\": {\n \"type\": \"number\"\n },\n \"auto_archive\": {\n \"type\": \"boolean\"\n },\n \"auto_archive_delay_minutes\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n },\n \"additionalProperties\": true\n },\n \"statusPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"values\",\n \"default\",\n \"completed_values\",\n \"definitions\"\n ],\n \"properties\": {\n \"values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"default\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"completed_values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"skipped_values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"default_skipped\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"definitions\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/statusDefinition\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"priorityDefinition\": {\n \"type\": \"object\",\n \"required\": [\n \"value\",\n \"label\",\n \"color\",\n \"weight\"\n ],\n \"properties\": {\n \"value\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"weight\": {\n \"type\": \"number\"\n }\n },\n \"additionalProperties\": true\n },\n \"priorityPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"values\",\n \"default\",\n \"definitions\"\n ],\n \"properties\": {\n \"values\": {\n \"$ref\": \"#/$defs/stringSet\"\n },\n \"default\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"definitions\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/priorityDefinition\"\n }\n }\n },\n \"additionalProperties\": false\n },\n \"recurrencePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"syntax\",\n \"maintain_due_date_offset\",\n \"reset_body_checkboxes\"\n ],\n \"properties\": {\n \"syntax\": {\n \"const\": \"tasknotes\"\n },\n \"maintain_due_date_offset\": {\n \"type\": \"boolean\"\n },\n \"reset_body_checkboxes\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"occurrencePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"identity_roles\",\n \"default_materialization\",\n \"default_next_trigger\"\n ],\n \"properties\": {\n \"identity_roles\": {\n \"const\": [\n \"recurrenceParent\",\n \"occurrenceDate\"\n ]\n },\n \"default_materialization\": {\n \"enum\": [\n \"manual\",\n \"on_completion\",\n \"rolling\"\n ]\n },\n \"default_next_trigger\": {\n \"enum\": [\n \"completion\",\n \"completion_or_skip\"\n ]\n },\n \"past_horizon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"future_horizon\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"additionalProperties\": false\n },\n \"linkPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"accepted_formats\",\n \"write_format\"\n ],\n \"properties\": {\n \"accepted_formats\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"wikilink\",\n \"markdown\"\n ]\n }\n },\n \"write_format\": {\n \"enum\": [\n \"wikilink\",\n \"markdown\"\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"archivePolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"archived_tag\",\n \"move_on_archive\"\n ],\n \"properties\": {\n \"archived_tag\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"move_on_archive\": {\n \"type\": \"boolean\"\n },\n \"folder\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n }\n },\n \"additionalProperties\": false\n },\n \"timeTrackingPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"auto_stop_on_complete\"\n ],\n \"properties\": {\n \"auto_stop_on_complete\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"templatingPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"enabled\",\n \"occurrence_enabled\"\n ],\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"template_path\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"occurrence_enabled\": {\n \"type\": \"boolean\"\n },\n \"occurrence_template_path\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"failure_mode\": {\n \"enum\": [\n \"error\",\n \"warning_fallback\"\n ]\n },\n \"unknown_variable_policy\": {\n \"enum\": [\n \"preserve\",\n \"empty\"\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"nlpTrigger\": {\n \"type\": \"object\",\n \"required\": [\n \"property_id\",\n \"trigger\",\n \"enabled\"\n ],\n \"properties\": {\n \"property_id\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"trigger\": {\n \"$ref\": \"#/$defs/nonEmptyString\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"nlpPolicy\": {\n \"type\": \"object\",\n \"required\": [\n \"triggers\"\n ],\n \"properties\": {\n \"triggers\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/nlpTrigger\"\n }\n }\n },\n \"additionalProperties\": false\n }\n }\n}\n" - } - ], - "provides": [ - { - "id": "tasknotes.task", - "version": "0.3.0-rc.5", - "digest": "sha256:dde71d0d776aa0069ee627fe3c10b1a20f87ba36929a16790598ebfb4e8ebf04" - } - ] -} diff --git a/public/contracts/schemas/catalog.v1.schema.json b/public/contracts/schemas/catalog.v1.schema.json deleted file mode 100644 index 1a5b085..0000000 --- a/public/contracts/schemas/catalog.v1.schema.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/contracts/schemas/catalog.v1.schema.json", - "title": "mdbase contract catalog v1", - "type": "object", - "required": [ - "catalog_version", - "id", - "name", - "description", - "homepage", - "publisher", - "contracts", - "packs" - ], - "properties": { - "catalog_version": { "const": 1 }, - "id": { "$ref": "#/$defs/id" }, - "name": { "type": "string", "minLength": 1 }, - "description": { "type": "string", "minLength": 1 }, - "homepage": { "type": "string", "format": "uri" }, - "publisher": { - "type": "object", - "required": ["name", "url"], - "properties": { - "name": { "type": "string", "minLength": 1 }, - "url": { "type": "string", "format": "uri" } - }, - "additionalProperties": false - }, - "contracts": { - "type": "array", - "items": { "$ref": "#/$defs/contract" } - }, - "packs": { - "type": "array", - "items": { "$ref": "#/$defs/pack" } - } - }, - "additionalProperties": false, - "$defs": { - "id": { - "type": "string", - "minLength": 3, - "maxLength": 128, - "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "relativeUrl": { - "type": "string", - "pattern": "^\\./(?!.*(?:^|/)\\.\\.(?:/|$)).+$" - }, - "contractRef": { - "type": "object", - "required": ["id", "version", "digest"], - "properties": { - "id": { "$ref": "#/$defs/id" }, - "version": { "$ref": "#/$defs/version" }, - "digest": { "$ref": "#/$defs/digest" } - }, - "additionalProperties": false - }, - "standard": { - "type": "object", - "required": ["name", "version", "scope", "references"], - "properties": { - "name": { "type": "string", "minLength": 1 }, - "version": { "type": "string", "minLength": 1 }, - "scope": { "type": "string", "minLength": 1 }, - "references": { - "type": "array", - "minItems": 1, - "items": { "type": "string", "format": "uri" } - } - }, - "additionalProperties": false - }, - "contract": { - "type": "object", - "required": [ - "id", - "version", - "name", - "description", - "contract_type", - "digest", - "artifact", - "standards" - ], - "properties": { - "id": { "$ref": "#/$defs/id" }, - "version": { "$ref": "#/$defs/version" }, - "name": { "type": "string", "minLength": 1 }, - "description": { "type": "string", "minLength": 1 }, - "contract_type": { "enum": ["record", "event", "action"] }, - "digest": { "$ref": "#/$defs/digest" }, - "artifact": { "$ref": "#/$defs/relativeUrl" }, - "standards": { - "type": "array", - "items": { "$ref": "#/$defs/standard" } - } - }, - "additionalProperties": false - }, - "pack": { - "type": "object", - "required": [ - "id", - "version", - "name", - "description", - "digest", - "provision", - "provides", - "resource_count", - "featured" - ], - "properties": { - "id": { "$ref": "#/$defs/id" }, - "version": { "$ref": "#/$defs/version" }, - "name": { "type": "string", "minLength": 1 }, - "description": { "type": "string", "minLength": 1 }, - "digest": { "$ref": "#/$defs/digest" }, - "provision": { "$ref": "#/$defs/relativeUrl" }, - "provides": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#/$defs/contractRef" } - }, - "resource_count": { "type": "integer", "minimum": 1 }, - "featured": { "type": "boolean" } - }, - "additionalProperties": false - } - } -} diff --git a/public/contracts/schemas/catalog.v2.schema.json b/public/contracts/schemas/catalog.v2.schema.json deleted file mode 100644 index c63f2dc..0000000 --- a/public/contracts/schemas/catalog.v2.schema.json +++ /dev/null @@ -1,194 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/contracts/schemas/catalog.v2.schema.json", - "title": "mdbase contract catalog v2", - "type": "object", - "required": [ - "catalog_version", - "id", - "name", - "description", - "homepage", - "publisher", - "contracts", - "packs" - ], - "properties": { - "catalog_version": { "const": 2 }, - "id": { "$ref": "#/$defs/id" }, - "name": { "type": "string", "minLength": 1 }, - "description": { "type": "string", "minLength": 1 }, - "homepage": { "type": "string", "format": "uri" }, - "publisher": { - "type": "object", - "required": ["name", "url"], - "properties": { - "name": { "type": "string", "minLength": 1 }, - "url": { "type": "string", "format": "uri" } - }, - "additionalProperties": false - }, - "contracts": { - "type": "array", - "items": { "$ref": "#/$defs/contract" } - }, - "packs": { - "type": "array", - "items": { "$ref": "#/$defs/pack" } - } - }, - "additionalProperties": false, - "$defs": { - "id": { - "type": "string", - "minLength": 3, - "maxLength": 128, - "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "relativeUrl": { - "type": "string", - "pattern": "^\\./(?!.*(?:^|/)\\.\\.(?:/|$)).+$" - }, - "contractRef": { - "type": "object", - "required": ["id", "version", "digest"], - "properties": { - "id": { "$ref": "#/$defs/id" }, - "version": { "$ref": "#/$defs/version" }, - "digest": { "$ref": "#/$defs/digest" } - }, - "additionalProperties": false - }, - "standard": { - "type": "object", - "required": ["name", "version", "scope", "references"], - "properties": { - "name": { "type": "string", "minLength": 1 }, - "version": { "type": "string", "minLength": 1 }, - "scope": { "type": "string", "minLength": 1 }, - "references": { - "type": "array", - "minItems": 1, - "items": { "type": "string", "format": "uri" } - } - }, - "additionalProperties": false - }, - "contract": { - "type": "object", - "required": [ - "id", - "version", - "name", - "description", - "contract_type", - "digest", - "artifact", - "standards" - ], - "properties": { - "id": { "$ref": "#/$defs/id" }, - "version": { "$ref": "#/$defs/version" }, - "name": { "type": "string", "minLength": 1 }, - "description": { "type": "string", "minLength": 1 }, - "contract_type": { "enum": ["record", "event", "action"] }, - "digest": { "$ref": "#/$defs/digest" }, - "artifact": { "$ref": "#/$defs/relativeUrl" }, - "standards": { - "type": "array", - "items": { "$ref": "#/$defs/standard" } - } - }, - "additionalProperties": false - }, - "display": { - "type": "object", - "required": ["name", "summary", "category", "audience", "icon"], - "properties": { - "name": { "type": "string", "minLength": 1 }, - "summary": { "type": "string", "minLength": 1 }, - "category": { - "enum": ["people", "work", "research", "calendar", "infrastructure", "other"] - }, - "audience": { "enum": ["general", "developer", "infrastructure"] }, - "icon": { "type": "string", "minLength": 1 }, - "badges": { - "type": "array", - "items": { "type": "string", "minLength": 1 }, - "uniqueItems": true - } - }, - "additionalProperties": false - }, - "installedType": { - "type": "object", - "required": ["name", "label"], - "properties": { - "name": { "type": "string", "minLength": 1 }, - "label": { "type": "string", "minLength": 1 } - }, - "additionalProperties": false - }, - "installation": { - "type": "object", - "required": ["visibility", "recommendation", "primary_type", "types"], - "properties": { - "visibility": { "enum": ["default", "advanced", "hidden"] }, - "recommendation": { "enum": ["user", "optional", "integration-managed"] }, - "primary_type": { - "oneOf": [ - { "type": "string", "minLength": 1 }, - { "type": "null" } - ] - }, - "types": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#/$defs/installedType" } - }, - "caution": { "type": "string", "minLength": 1 } - }, - "additionalProperties": false - }, - "pack": { - "type": "object", - "required": [ - "id", - "version", - "name", - "description", - "digest", - "provision", - "provides", - "resource_count", - "display", - "installation" - ], - "properties": { - "id": { "$ref": "#/$defs/id" }, - "version": { "$ref": "#/$defs/version" }, - "name": { "type": "string", "minLength": 1 }, - "description": { "type": "string", "minLength": 1 }, - "digest": { "$ref": "#/$defs/digest" }, - "provision": { "$ref": "#/$defs/relativeUrl" }, - "provides": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#/$defs/contractRef" } - }, - "resource_count": { "type": "integer", "minimum": 1 }, - "display": { "$ref": "#/$defs/display" }, - "installation": { "$ref": "#/$defs/installation" } - }, - "additionalProperties": false - } - } -} diff --git a/public/contracts/schemas/mdbase.comment/1.0.0.schema.json b/public/contracts/schemas/mdbase.comment/1.0.0.schema.json deleted file mode 100644 index ae810d6..0000000 --- a/public/contracts/schemas/mdbase.comment/1.0.0.schema.json +++ /dev/null @@ -1,229 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/contracts/schemas/mdbase.comment/1.0.0.schema.json", - "title": "Comment", - "description": "A comment, reply or suggested edit on a Markdown record, stored as its own record. The comment's Markdown body is its text.", - "type": "object", - "required": [ - "document", - "created_at" - ], - "properties": { - "document": { - "type": "string", - "pattern": "\\S", - "description": "Link to the commented record, such as [[chapters/method]]. Replies repeat their thread's document so one query finds a record's whole discussion." - }, - "in_reply_to": { - "type": "string", - "pattern": "\\S", - "description": "Link to the first comment of the thread this comment replies to. Absent on the first comment of a thread." - }, - "motivation": { - "enum": [ - "commenting", - "replying", - "editing" - ], - "default": "commenting", - "description": "commenting starts a thread, replying answers one, and editing suggests replacing the target's text." - }, - "target": { - "type": "object", - "description": "Where in the document the thread is anchored. Absent means the whole record. Only the first comment of a thread has a target.", - "properties": { - "quote": { - "type": "object", - "description": "The anchored text and the text around it. The quote is authoritative; positions are a hint.", - "required": [ - "exact" - ], - "properties": { - "exact": { - "type": "string", - "description": "The anchored text exactly as it appears in the record body. Empty for an insertion point, which prefix or suffix then locates." - }, - "prefix": { - "type": "string", - "description": "Text immediately before exact, to tell repeated occurrences apart." - }, - "suffix": { - "type": "string", - "description": "Text immediately after exact, to tell repeated occurrences apart." - } - }, - "if": { - "required": [ - "exact" - ], - "properties": { - "exact": { - "type": "string", - "maxLength": 0 - } - } - }, - "then": { - "anyOf": [ - { - "required": [ - "prefix" - ], - "properties": { - "prefix": { - "type": "string", - "minLength": 1 - } - } - }, - { - "required": [ - "suffix" - ], - "properties": { - "suffix": { - "type": "string", - "minLength": 1 - } - } - } - ] - }, - "additionalProperties": false - }, - "text_position": { - "type": "object", - "description": "Offsets of the quote in one revision of the record body.", - "required": [ - "basis", - "unit", - "start", - "end" - ], - "properties": { - "basis": { - "type": "object", - "required": [ - "profile", - "hash" - ], - "properties": { - "profile": { - "const": "markdown-body", - "description": "Offsets count the record's Markdown body as stored, after the frontmatter, so frontmatter edits never move them." - }, - "hash": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$", - "description": "SHA-256 of the UTF-8 body the offsets were measured in." - } - }, - "additionalProperties": false - }, - "unit": { - "const": "unicode_code_point" - }, - "start": { - "type": "integer", - "minimum": 0 - }, - "end": { - "type": "integer", - "minimum": 0 - } - }, - "additionalProperties": false - } - }, - "required": [ - "quote" - ], - "additionalProperties": false - }, - "suggestion": { - "type": "object", - "description": "The suggested edit of an editing comment: replace the target's quote with replacement.", - "required": [ - "replacement" - ], - "properties": { - "replacement": { - "type": "string", - "description": "The text to put in place of the quote. Empty suggests deleting it." - }, - "outcome": { - "enum": [ - "accepted", - "rejected" - ], - "description": "What happened to the suggestion once its thread was resolved." - } - }, - "additionalProperties": false - }, - "status": { - "enum": [ - "open", - "resolved" - ], - "default": "open", - "description": "Whether the thread is still open. Only meaningful on the first comment of a thread." - }, - "resolved_by": { - "type": "string", - "pattern": "\\S", - "description": "Link to the mdbase.person record of who resolved the thread." - }, - "resolved_at": { - "type": "string", - "format": "date-time" - }, - "created_by": { - "type": "string", - "pattern": "\\S", - "description": "Link to the mdbase.person record of the comment's author. Absent when the author has no person record." - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "modified_at": { - "type": "string", - "format": "date-time" - }, - "deleted_at": { - "type": "string", - "format": "date-time", - "description": "When the comment was withdrawn. The record stays so its thread and replies keep their shape; its body should be emptied." - } - }, - "allOf": [ - { - "if": { - "properties": { - "motivation": { - "const": "editing" - } - }, - "required": [ - "motivation" - ] - }, - "then": { - "required": [ - "target", - "suggestion" - ], - "properties": { - "target": { - "type": "object" - }, - "suggestion": { - "type": "object" - } - } - } - } - ], - "additionalProperties": false -} diff --git a/public/contracts/schemas/mdbase.contact/1.0.0.schema.json b/public/contracts/schemas/mdbase.contact/1.0.0.schema.json deleted file mode 100644 index 51570d0..0000000 --- a/public/contracts/schemas/mdbase.contact/1.0.0.schema.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/contracts/schemas/mdbase.contact/1.0.0.schema.json", - "title": "Contact", - "description": "A compact application-facing contact view.", - "type": "object", - "required": ["name"], - "properties": { - "name": { - "type": "string", - "minLength": 1, - "description": "The name applications should use when presenting this contact." - }, - "kind": { - "type": "string", - "enum": ["individual", "organisation", "group"], - "description": "The broad kind of contact when the collection distinguishes it." - }, - "primary_email": { - "type": "string", - "format": "email", - "description": "The preferred email address for this contact." - }, - "primary_phone": { - "type": "string", - "minLength": 1, - "description": "The preferred telephone number for this contact." - }, - "organisation": { - "type": "string", - "minLength": 1, - "description": "The organisation most closely associated with this contact." - }, - "birthday": { - "type": "string", - "format": "date", - "description": "The contact's birthday when known." - } - }, - "additionalProperties": false -} diff --git a/public/contracts/schemas/mdbase.jscontact.card/2.0.0.schema.json b/public/contracts/schemas/mdbase.jscontact.card/2.0.0.schema.json deleted file mode 100644 index 17c8144..0000000 --- a/public/contracts/schemas/mdbase.jscontact.card/2.0.0.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/contracts/schemas/mdbase.jscontact.card/2.0.0.schema.json", - "title": "JSContact Card 2.0 core profile", - "description": "A strict mdbase core profile of an IETF JSContact 2.0 Card.", - "type": "object", - "required": ["@type", "version"], - "properties": { - "@type": { "const": "Card" }, - "version": { "const": "2.0" }, - "uid": { "type": "string", "minLength": 1 }, - "kind": { - "enum": ["individual", "group", "org", "location", "device", "application"] - }, - "name": { "$ref": "#/$defs/name" }, - "emails": { - "type": "object", - "propertyNames": { "$ref": "#/$defs/id" }, - "additionalProperties": { "$ref": "#/$defs/emailAddress" } - }, - "phones": { - "type": "object", - "propertyNames": { "$ref": "#/$defs/id" }, - "additionalProperties": { "$ref": "#/$defs/phone" } - }, - "organizations": { - "type": "object", - "propertyNames": { "$ref": "#/$defs/id" }, - "additionalProperties": { "$ref": "#/$defs/organization" } - }, - "notes": { - "type": "object", - "propertyNames": { "$ref": "#/$defs/id" }, - "additionalProperties": { "$ref": "#/$defs/note" } - } - }, - "additionalProperties": false, - "$defs": { - "id": { - "type": "string", - "minLength": 1 - }, - "trueSet": { - "type": "object", - "additionalProperties": { "const": true } - }, - "name": { - "type": "object", - "properties": { - "@type": { "const": "Name" }, - "components": { - "type": "array", - "minItems": 1, - "contains": { - "type": "object", - "required": ["kind"], - "properties": { - "kind": { "not": { "const": "separator" } } - } - }, - "items": { "$ref": "#/$defs/nameComponent" } - }, - "full": { "type": "string", "minLength": 1 }, - "isOrdered": { "type": "boolean" }, - "defaultSeparator": { "type": "string" } - }, - "anyOf": [ - { "required": ["components"] }, - { "required": ["full"] } - ], - "additionalProperties": false - }, - "nameComponent": { - "type": "object", - "required": ["kind", "value"], - "properties": { - "@type": { "const": "NameComponent" }, - "kind": { - "enum": [ - "credential", - "generation", - "given", - "given2", - "separator", - "surname", - "surname2", - "title" - ] - }, - "value": { "type": "string" } - }, - "additionalProperties": false - }, - "emailAddress": { - "type": "object", - "required": ["address"], - "properties": { - "@type": { "const": "EmailAddress" }, - "address": { "type": "string", "format": "email" }, - "contexts": { "$ref": "#/$defs/trueSet" }, - "pref": { "type": "integer", "minimum": 1 }, - "label": { "type": "string" } - }, - "additionalProperties": false - }, - "phone": { - "type": "object", - "required": ["number"], - "properties": { - "@type": { "const": "Phone" }, - "number": { "type": "string", "minLength": 1 }, - "features": { "$ref": "#/$defs/trueSet" }, - "contexts": { "$ref": "#/$defs/trueSet" }, - "pref": { "type": "integer", "minimum": 1 }, - "label": { "type": "string" } - }, - "additionalProperties": false - }, - "organization": { - "type": "object", - "properties": { - "@type": { "const": "Organization" }, - "name": { "type": "string", "minLength": 1 }, - "units": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#/$defs/orgUnit" } - }, - "sortAs": { "type": "string" }, - "contexts": { "$ref": "#/$defs/trueSet" } - }, - "anyOf": [ - { "required": ["name"] }, - { "required": ["units"] } - ], - "additionalProperties": false - }, - "orgUnit": { - "type": "object", - "required": ["name"], - "properties": { - "@type": { "const": "OrgUnit" }, - "name": { "type": "string", "minLength": 1 } - }, - "additionalProperties": false - }, - "note": { - "type": "object", - "required": ["note"], - "properties": { - "@type": { "const": "Note" }, - "note": { "type": "string" }, - "created": { "type": "string", "format": "date-time" } - }, - "additionalProperties": false - } - } -} - diff --git a/public/contracts/schemas/mdbase.person/1.0.0.schema.json b/public/contracts/schemas/mdbase.person/1.0.0.schema.json deleted file mode 100644 index 6116dff..0000000 --- a/public/contracts/schemas/mdbase.person/1.0.0.schema.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/contracts/schemas/mdbase.person/1.0.0.schema.json", - "title": "Person", - "description": "A portable person reference with editable account identity associations. Not an authentication or access-control assertion.", - "type": "object", - "required": ["id", "name"], - "properties": { - "id": { - "type": "string", - "pattern": "\\S", - "description": "Stable person identifier used by references such as task assignments; independent of file path, name, account, and membership." - }, - "name": { - "type": "string", - "pattern": "\\S", - "description": "Collection-owned display name, not a verified account name." - }, - "identities": { - "type": "array", - "uniqueItems": true, - "description": "Editable identity associations. Missing or empty means this person has no linked account. Match issuer and subject exactly; never match by email or name.", - "items": { - "type": "object", - "required": ["issuer", "subject"], - "properties": { - "issuer": { - "type": "string", - "format": "uri", - "pattern": "^https?://", - "description": "Stable issuer URL supplied by the identity service. Copy exactly; do not derive from a collection authority or relay URL." - }, - "subject": { - "type": "string", - "pattern": "\\S", - "description": "Opaque, case-sensitive, account-wide identifier supplied by the issuer. Not an email, membership ID, or credential." - } - }, - "additionalProperties": false - } - } - }, - "additionalProperties": false -} diff --git a/public/contracts/schemas/mdbase.person/2.0.0.schema.json b/public/contracts/schemas/mdbase.person/2.0.0.schema.json deleted file mode 100644 index 65e3dff..0000000 --- a/public/contracts/schemas/mdbase.person/2.0.0.schema.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/contracts/schemas/mdbase.person/2.0.0.schema.json", - "title": "Person", - "description": "A person represented by a record, referenced by links to that record, with editable account identity associations. Not an authentication or access-control assertion.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "pattern": "\\S", - "description": "Collection-owned display name, not a verified account name." - }, - "identities": { - "type": "array", - "uniqueItems": true, - "description": "Editable identity associations. Missing or empty means this person has no linked account. Match issuer and subject exactly; never match by email or name.", - "items": { - "type": "object", - "required": [ - "issuer", - "subject" - ], - "properties": { - "issuer": { - "type": "string", - "format": "uri", - "pattern": "^https?://", - "description": "Stable issuer URL supplied by the identity service. Copy exactly; do not derive from a collection authority or relay URL." - }, - "subject": { - "type": "string", - "pattern": "\\S", - "description": "Opaque, case-sensitive, account-wide identifier supplied by the issuer. Not an email, membership ID, or credential." - } - }, - "additionalProperties": false - } - } - }, - "additionalProperties": false -} diff --git a/public/contracts/schemas/mdbase.record.created/1.0.0.schema.json b/public/contracts/schemas/mdbase.record.created/1.0.0.schema.json deleted file mode 100644 index f2f1c4e..0000000 --- a/public/contracts/schemas/mdbase.record.created/1.0.0.schema.json +++ /dev/null @@ -1,180 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase record-created event data", - "type": "object", - "required": [ - "path", - "after", - "changed_fields", - "revision", - "types" - ], - "properties": { - "path": { - "type": "string", - "minLength": 1 - }, - "after": { - "type": "object" - }, - "changed_fields": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "revision": { - "type": "string", - "minLength": 1 - }, - "types": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.record.created/1.0.0.schema.json" -} diff --git a/public/contracts/schemas/mdbase.record.deleted/1.0.0.schema.json b/public/contracts/schemas/mdbase.record.deleted/1.0.0.schema.json deleted file mode 100644 index 49a395f..0000000 --- a/public/contracts/schemas/mdbase.record.deleted/1.0.0.schema.json +++ /dev/null @@ -1,172 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase record-deleted event data", - "type": "object", - "required": [ - "path", - "before", - "previous_revision", - "types" - ], - "properties": { - "path": { - "type": "string", - "minLength": 1 - }, - "before": { - "type": "object" - }, - "previous_revision": { - "type": "string", - "minLength": 1 - }, - "types": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.record.deleted/1.0.0.schema.json" -} diff --git a/public/contracts/schemas/mdbase.record.modified/1.0.0.schema.json b/public/contracts/schemas/mdbase.record.modified/1.0.0.schema.json deleted file mode 100644 index 57ad051..0000000 --- a/public/contracts/schemas/mdbase.record.modified/1.0.0.schema.json +++ /dev/null @@ -1,198 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase record-modified event data", - "type": "object", - "required": [ - "path", - "before", - "after", - "changed_fields", - "previous_revision", - "revision", - "previous_types", - "types" - ], - "properties": { - "path": { - "type": "string", - "minLength": 1 - }, - "before": { - "type": "object" - }, - "after": { - "type": "object" - }, - "changed_fields": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "previous_revision": { - "type": "string", - "minLength": 1 - }, - "revision": { - "type": "string", - "minLength": 1 - }, - "previous_types": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - }, - "types": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.record.modified/1.0.0.schema.json" -} diff --git a/public/contracts/schemas/mdbase.record.renamed/1.0.0.schema.json b/public/contracts/schemas/mdbase.record.renamed/1.0.0.schema.json deleted file mode 100644 index 4c11fc8..0000000 --- a/public/contracts/schemas/mdbase.record.renamed/1.0.0.schema.json +++ /dev/null @@ -1,195 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase record-renamed event data", - "type": "object", - "required": [ - "from", - "to", - "before", - "after", - "previous_revision", - "revision", - "previous_types", - "types" - ], - "properties": { - "from": { - "type": "string", - "minLength": 1 - }, - "to": { - "type": "string", - "minLength": 1 - }, - "before": { - "type": "object" - }, - "after": { - "type": "object" - }, - "previous_revision": { - "type": "string", - "minLength": 1 - }, - "revision": { - "type": "string", - "minLength": 1 - }, - "previous_types": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - }, - "types": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.record.renamed/1.0.0.schema.json" -} diff --git a/public/contracts/schemas/mdbase.runtime.action-attempt/1.0.0.schema.json b/public/contracts/schemas/mdbase.runtime.action-attempt/1.0.0.schema.json deleted file mode 100644 index b02f7b7..0000000 --- a/public/contracts/schemas/mdbase.runtime.action-attempt/1.0.0.schema.json +++ /dev/null @@ -1,238 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime action attempt", - "type": "object", - "required": [ - "type", - "id", - "run_id", - "step_id", - "request_id", - "invocation_id", - "attempt_id", - "contract", - "provider", - "provider_declaration_digest", - "status", - "created_at", - "updated_at" - ], - "properties": { - "type": { - "const": "runtime_action_attempt" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "run_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "step_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "request_id": { - "type": "string", - "minLength": 1 - }, - "invocation_id": { - "type": "string", - "minLength": 1 - }, - "attempt_id": { - "type": "string", - "minLength": 1 - }, - "contract": { - "$ref": "#/$defs/exactContractReference" - }, - "provider": { - "$ref": "#/$defs/identity" - }, - "provider_declaration_digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "handler_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "idempotency_key": { - "type": "string" - }, - "status": { - "enum": [ - "admitted", - "dispatching", - "succeeded", - "rejected", - "failed", - "cancelled", - "indeterminate" - ] - }, - "request": { - "type": "object" - }, - "invocation": { - "type": "object" - }, - "outcome": { - "type": "object" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "updated_at": { - "type": "string", - "format": "date-time" - }, - "completed_at": { - "type": "string", - "format": "date-time" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.action-attempt/1.0.0.schema.json" -} diff --git a/public/contracts/schemas/mdbase.runtime.capability-grant/1.0.0.schema.json b/public/contracts/schemas/mdbase.runtime.capability-grant/1.0.0.schema.json deleted file mode 100644 index 9d6cc2d..0000000 --- a/public/contracts/schemas/mdbase.runtime.capability-grant/1.0.0.schema.json +++ /dev/null @@ -1,197 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase runtime capability grant", - "type": "object", - "required": [ - "type", - "id", - "capability", - "principal", - "mode", - "granted_at" - ], - "properties": { - "type": { - "const": "runtime_capability_grant" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "capability": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "principal": { - "$ref": "#/$defs/identity" - }, - "mode": { - "enum": [ - "allow", - "deny" - ] - }, - "actions": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/$defs/contractRequirement" - } - }, - "providers": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/$defs/providerSelector" - } - }, - "granted_at": { - "type": "string", - "format": "date-time" - }, - "expires_at": { - "type": "string", - "format": "date-time" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.capability-grant/1.0.0.schema.json" -} diff --git a/public/contracts/schemas/mdbase.runtime.checkpoint/1.0.0.schema.json b/public/contracts/schemas/mdbase.runtime.checkpoint/1.0.0.schema.json deleted file mode 100644 index f14163b..0000000 --- a/public/contracts/schemas/mdbase.runtime.checkpoint/1.0.0.schema.json +++ /dev/null @@ -1,188 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime checkpoint", - "type": "object", - "required": [ - "type", - "id", - "run_id", - "generation", - "status", - "state", - "updated_at" - ], - "properties": { - "type": { - "const": "runtime_checkpoint" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "run_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "generation": { - "type": "integer", - "minimum": 1 - }, - "status": { - "enum": [ - "open", - "waiting", - "ready", - "completed", - "failed", - "cancelled" - ] - }, - "state": { - "type": "object" - }, - "updated_at": { - "type": "string", - "format": "date-time" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.checkpoint/1.0.0.schema.json" -} diff --git a/public/contracts/schemas/mdbase.runtime.dead-letter/1.0.0.schema.json b/public/contracts/schemas/mdbase.runtime.dead-letter/1.0.0.schema.json deleted file mode 100644 index ea3be8b..0000000 --- a/public/contracts/schemas/mdbase.runtime.dead-letter/1.0.0.schema.json +++ /dev/null @@ -1,191 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime dead letter", - "type": "object", - "required": [ - "type", - "id", - "reason", - "status", - "evidence", - "created_at" - ], - "properties": { - "type": { - "const": "runtime_dead_letter" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "reason": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "status": { - "enum": [ - "unresolved", - "acknowledged", - "requeued" - ] - }, - "evidence_kind": { - "enum": [ - "event", - "action_request", - "action_outcome" - ] - }, - "evidence": { - "type": "object" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "acknowledged_at": { - "type": "string", - "format": "date-time" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.dead-letter/1.0.0.schema.json" -} diff --git a/public/contracts/schemas/mdbase.runtime.diagnostic/1.0.0.schema.json b/public/contracts/schemas/mdbase.runtime.diagnostic/1.0.0.schema.json deleted file mode 100644 index 0dec633..0000000 --- a/public/contracts/schemas/mdbase.runtime.diagnostic/1.0.0.schema.json +++ /dev/null @@ -1,193 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime diagnostic", - "type": "object", - "required": [ - "type", - "id", - "severity", - "code", - "message", - "created_at" - ], - "properties": { - "type": { - "const": "runtime_diagnostic" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "severity": { - "enum": [ - "info", - "warning", - "error" - ] - }, - "code": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "run_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "attempt_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "path": { - "type": "string" - }, - "details": {}, - "created_at": { - "type": "string", - "format": "date-time" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.diagnostic/1.0.0.schema.json" -} diff --git a/public/contracts/schemas/mdbase.runtime.policy/1.0.0.schema.json b/public/contracts/schemas/mdbase.runtime.policy/1.0.0.schema.json deleted file mode 100644 index a873c7b..0000000 --- a/public/contracts/schemas/mdbase.runtime.policy/1.0.0.schema.json +++ /dev/null @@ -1,263 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime policy", - "type": "object", - "required": [ - "type", - "id", - "version", - "enabled", - "grants" - ], - "properties": { - "type": { - "const": "runtime_policy" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "name": { - "type": "string", - "minLength": 1 - }, - "enabled": { - "type": "boolean" - }, - "executors": { - "type": "object", - "required": [], - "properties": { - "default": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "workflows": { - "type": "object", - "additionalProperties": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "provider_selections": { - "type": "array", - "items": { - "type": "object", - "required": [ - "contract", - "selector" - ], - "properties": { - "contract": { - "$ref": "#/$defs/contractRequirement" - }, - "selector": { - "$ref": "#/$defs/providerSelector" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - } - }, - "grants": { - "type": "array", - "items": { - "type": "object", - "required": [ - "capability", - "mode" - ], - "properties": { - "capability": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "mode": { - "enum": [ - "allow", - "deny" - ] - }, - "actions": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/$defs/contractRequirement" - } - }, - "providers": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/$defs/providerSelector" - } - }, - "max_calls_per_run": { - "type": "integer", - "minimum": 1 - }, - "max_records_per_run": { - "type": "integer", - "minimum": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.policy/1.0.0.schema.json" -} diff --git a/public/contracts/schemas/mdbase.runtime.provider-registration/1.0.0.schema.json b/public/contracts/schemas/mdbase.runtime.provider-registration/1.0.0.schema.json deleted file mode 100644 index 1fb73c5..0000000 --- a/public/contracts/schemas/mdbase.runtime.provider-registration/1.0.0.schema.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase runtime provider registration evidence", - "type": "object", - "required": [ - "type", - "id", - "declaration_kind", - "declaration", - "verified_at", - "active" - ], - "properties": { - "type": { - "const": "runtime_provider_registration" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "declaration_kind": { - "enum": [ - "event_source", - "action_provider" - ] - }, - "declaration": { - "type": "object" - }, - "verified_at": { - "type": "string", - "format": "date-time" - }, - "active": { - "type": "boolean" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.provider-registration/1.0.0.schema.json" -} diff --git a/public/contracts/schemas/mdbase.runtime.run.cancel/1.0.0.output.schema.json b/public/contracts/schemas/mdbase.runtime.run.cancel/1.0.0.output.schema.json deleted file mode 100644 index 8c3ed04..0000000 --- a/public/contracts/schemas/mdbase.runtime.run.cancel/1.0.0.output.schema.json +++ /dev/null @@ -1,161 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase runtime run-cancel action output", - "type": "object", - "required": [ - "run_id", - "status" - ], - "properties": { - "run_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "status": { - "enum": [ - "cancellation_requested", - "already_terminal" - ] - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.run.cancel/1.0.0.output.schema.json" -} diff --git a/public/contracts/schemas/mdbase.runtime.run.cancel/1.0.0.schema.json b/public/contracts/schemas/mdbase.runtime.run.cancel/1.0.0.schema.json deleted file mode 100644 index e5fd257..0000000 --- a/public/contracts/schemas/mdbase.runtime.run.cancel/1.0.0.schema.json +++ /dev/null @@ -1,157 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase runtime run-cancel action input", - "type": "object", - "required": [ - "run_id" - ], - "properties": { - "run_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "reason": { - "type": "string" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.run.cancel/1.0.0.schema.json" -} diff --git a/public/contracts/schemas/mdbase.runtime.run/1.0.0.schema.json b/public/contracts/schemas/mdbase.runtime.run/1.0.0.schema.json deleted file mode 100644 index 3966490..0000000 --- a/public/contracts/schemas/mdbase.runtime.run/1.0.0.schema.json +++ /dev/null @@ -1,356 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime run", - "type": "object", - "required": [ - "type", - "id", - "workflow_id", - "workflow_version", - "workflow_revision", - "event_id", - "event_contract", - "admitted_plan", - "status", - "created_at", - "updated_at" - ], - "properties": { - "type": { - "const": "runtime_run" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "workflow_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "workflow_version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "workflow_revision": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "event_id": { - "type": "string", - "minLength": 1 - }, - "event_contract": { - "$ref": "#/$defs/exactContractReference" - }, - "event_source": { - "$ref": "#/$defs/identity" - }, - "admitted_plan": { - "$ref": "#/$defs/admittedPlan" - }, - "policy_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "policy_revision": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "trigger_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "event_cursor": { - "type": "integer", - "minimum": 1 - }, - "executor": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "idempotency_key": { - "type": "string" - }, - "concurrency_group": { - "type": "string" - }, - "status": { - "enum": [ - "queued", - "running", - "waiting", - "succeeded", - "failed", - "cancelled", - "indeterminate" - ] - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "updated_at": { - "type": "string", - "format": "date-time" - }, - "started_at": { - "type": "string", - "format": "date-time" - }, - "finished_at": { - "type": "string", - "format": "date-time" - }, - "lease": { - "$ref": "#/$defs/lease" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - }, - "admittedPlan": { - "type": "object", - "required": [ - "profile_version", - "workflow_revision", - "event", - "steps" - ], - "properties": { - "profile_version": { - "const": "0.2" - }, - "workflow_revision": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "event": { - "type": "object", - "required": [ - "contract", - "source" - ], - "properties": { - "contract": { - "$ref": "#/$defs/exactContractReference" - }, - "source": { - "$ref": "#/$defs/identity" - }, - "source_declaration_digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "steps": { - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "contract", - "provider", - "provider_declaration_digest", - "handler_id" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "contract": { - "$ref": "#/$defs/exactContractReference" - }, - "provider": { - "$ref": "#/$defs/identity" - }, - "provider_declaration_digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "handler_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "lease": { - "type": "object", - "required": [ - "owner", - "token", - "expires_at" - ], - "properties": { - "owner": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "token": { - "type": "string", - "minLength": 1 - }, - "expires_at": { - "type": "string", - "format": "date-time" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.run/1.0.0.schema.json" -} diff --git a/public/contracts/schemas/mdbase.runtime.timer.fired/1.0.0.schema.json b/public/contracts/schemas/mdbase.runtime.timer.fired/1.0.0.schema.json deleted file mode 100644 index 26296a9..0000000 --- a/public/contracts/schemas/mdbase.runtime.timer.fired/1.0.0.schema.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase runtime timer-fired event data", - "type": "object", - "required": [ - "timer_id", - "generation", - "scheduled_for", - "fired_at", - "late_by_ms", - "data" - ], - "properties": { - "timer_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "generation": { - "type": "integer", - "minimum": 1 - }, - "scheduled_for": { - "type": "string", - "format": "date-time" - }, - "fired_at": { - "type": "string", - "format": "date-time" - }, - "late_by_ms": { - "type": "integer", - "minimum": 0 - }, - "data": { - "description": "Opaque application data supplied when the timer was scheduled." - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.timer.fired/1.0.0.schema.json" -} diff --git a/public/contracts/schemas/mdbase.runtime.timer/1.0.0.schema.json b/public/contracts/schemas/mdbase.runtime.timer/1.0.0.schema.json deleted file mode 100644 index a03fc67..0000000 --- a/public/contracts/schemas/mdbase.runtime.timer/1.0.0.schema.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime timer", - "type": "object", - "required": [ - "type", - "id", - "generation", - "status", - "fire_at", - "event", - "created_at", - "updated_at" - ], - "properties": { - "type": { - "const": "runtime_timer" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "generation": { - "type": "integer", - "minimum": 1 - }, - "status": { - "enum": [ - "scheduled", - "firing", - "fired", - "cancelled" - ] - }, - "fire_at": { - "type": "string", - "format": "date-time" - }, - "event": { - "type": "object", - "required": [ - "contract", - "data" - ], - "properties": { - "contract": { - "$ref": "#/$defs/contractRequirement" - }, - "subject": { - "type": "string" - }, - "correlation_id": { - "type": "string" - }, - "causation_id": { - "type": "string" - }, - "data": {} - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "missed_run_policy": { - "const": "fire_once" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "updated_at": { - "type": "string", - "format": "date-time" - }, - "fired_at": { - "type": "string", - "format": "date-time" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.timer/1.0.0.schema.json" -} diff --git a/public/contracts/schemas/mdbase.runtime.workflow/1.0.0.schema.json b/public/contracts/schemas/mdbase.runtime.workflow/1.0.0.schema.json deleted file mode 100644 index 60cf082..0000000 --- a/public/contracts/schemas/mdbase.runtime.workflow/1.0.0.schema.json +++ /dev/null @@ -1,392 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime workflow", - "type": "object", - "required": [ - "type", - "id", - "version", - "name", - "enabled", - "triggers", - "steps" - ], - "properties": { - "type": { - "const": "runtime_workflow" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "name": { - "type": "string", - "minLength": 1 - }, - "description": { - "type": "string" - }, - "enabled": { - "type": "boolean" - }, - "requires": { - "$ref": "#/$defs/requires" - }, - "vars": { - "type": "object", - "additionalProperties": {} - }, - "triggers": { - "type": "array", - "minItems": 1, - "items": { - "$ref": "#/$defs/trigger" - } - }, - "steps": { - "type": "array", - "minItems": 1, - "items": { - "$ref": "#/$defs/step" - } - }, - "run": { - "$ref": "#/$defs/runPolicy" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - }, - "requires": { - "type": "object", - "required": [], - "properties": { - "capabilities": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "trigger": { - "type": "object", - "required": [ - "id", - "event" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "event": { - "$ref": "#/$defs/contractRequirement" - }, - "if": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - }, - "debounce": { - "$ref": "#/$defs/duration" - }, - "minimum_interval": { - "$ref": "#/$defs/duration" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "step": { - "type": "object", - "required": [ - "id", - "action" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "name": { - "type": "string" - }, - "action": { - "$ref": "#/$defs/contractRequirement" - }, - "provider": { - "$ref": "#/$defs/providerSelector" - }, - "requires": { - "$ref": "#/$defs/requires" - }, - "if": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - }, - "input": { - "type": "object", - "additionalProperties": {} - }, - "for_each": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": {}, - "as": { - "type": "string", - "pattern": "^[A-Za-z_][A-Za-z0-9_]*$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "duration": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)(ms|s|m|h|d)$" - }, - "runPolicy": { - "type": "object", - "required": [], - "properties": { - "idempotency": { - "type": "object", - "required": [ - "key" - ], - "properties": { - "key": {} - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "concurrency": { - "type": "object", - "required": [ - "policy" - ], - "properties": { - "group": {}, - "policy": { - "enum": [ - "skip", - "queue", - "replace", - "allow" - ] - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "limits": { - "type": "object", - "required": [], - "properties": { - "timeout": { - "$ref": "#/$defs/duration" - }, - "max_items": { - "type": "integer", - "minimum": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "on_error": { - "enum": [ - "stop", - "continue" - ] - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.workflow/1.0.0.schema.json" -} diff --git a/public/contracts/schemas/mdbase.view/1.0.0.schema.json b/public/contracts/schemas/mdbase.view/1.0.0.schema.json deleted file mode 100644 index d98e82f..0000000 --- a/public/contracts/schemas/mdbase.view/1.0.0.schema.json +++ /dev/null @@ -1,261 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/v0.3/view.schema.json", - "title": "mdbase.view 1.0.0 record contract view", - "description": "The contract view of a saved-view record. A type implements mdbase.view by mapping these fields; the optional type property only lets the canonical view type validate its own membership value.", - "type": "object", - "required": ["id", "version", "name", "views"], - "properties": { - "type": { "type": "string", "minLength": 1 }, - "id": { "$ref": "#/$defs/identifier" }, - "version": { "type": "integer", "minimum": 1 }, - "name": { "type": "string", "minLength": 1 }, - "description": { "type": "string" }, - "query": { "$ref": "#/$defs/sharedQuery" }, - "properties": { "$ref": "#/$defs/propertyMetadataSet" }, - "summary_functions": { "$ref": "#/$defs/summaryFunctionSet" }, - "views": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#/$defs/view" } - } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "typeName": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9_-]{0,127}$" - }, - "fieldName": { - "type": "string", - "pattern": "^[A-Za-z_][A-Za-z0-9_:-]*$" - }, - "expression": { - "type": "string", - "minLength": 1 - }, - "extension": { - "type": "object", - "additionalProperties": true - }, - "typeList": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { "$ref": "#/$defs/typeName" } - }, - "sharedQuery": { - "type": "object", - "properties": { - "types": { "$ref": "#/$defs/typeList" }, - "where": { "$ref": "#/$defs/expression" }, - "context": { "$ref": "#/$defs/viewContext" }, - "projections": { "$ref": "#/$defs/projectionSet" } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false - }, - "viewContext": { - "type": "object", - "required": ["this"], - "properties": { - "this": { "$ref": "#/$defs/thisContext" } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false - }, - "thisContext": { - "type": "object", - "properties": { - "on_missing": { - "enum": ["view", "null", "error"], - "default": "view" - }, - "types": { "$ref": "#/$defs/typeList" } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false - }, - "projectionSet": { - "type": "object", - "propertyNames": { "$ref": "#/$defs/fieldName" }, - "additionalProperties": { "$ref": "#/$defs/projection" } - }, - "projection": { - "type": "object", - "required": ["expr"], - "properties": { - "expr": { "$ref": "#/$defs/expression" }, - "description": { "type": "string" } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false - }, - "propertyMetadataSet": { - "type": "object", - "propertyNames": { "type": "string", "minLength": 1 }, - "additionalProperties": { "$ref": "#/$defs/propertyMetadata" } - }, - "propertyMetadata": { - "type": "object", - "properties": { - "label": { "type": "string" }, - "description": { "type": "string" }, - "format": { "type": "string" }, - "hidden": { "type": "boolean" } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false - }, - "summaryFunctionSet": { - "type": "object", - "propertyNames": { "$ref": "#/$defs/fieldName" }, - "additionalProperties": { "$ref": "#/$defs/summaryFunction" } - }, - "summaryFunction": { - "type": "object", - "required": ["expr"], - "properties": { - "expr": { "$ref": "#/$defs/expression" }, - "description": { "type": "string" } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false - }, - "view": { - "type": "object", - "required": ["id", "name"], - "properties": { - "id": { "$ref": "#/$defs/identifier" }, - "name": { "type": "string", "minLength": 1 }, - "description": { "type": "string" }, - "types": { "$ref": "#/$defs/typeList" }, - "where": { "$ref": "#/$defs/expression" }, - "context": { "$ref": "#/$defs/viewContext" }, - "projections": { "$ref": "#/$defs/projectionSet" }, - "select": { "$ref": "#/$defs/select" }, - "order_by": { "$ref": "#/$defs/orderBy" }, - "group_by": { "$ref": "#/$defs/groupBy" }, - "summaries": { "$ref": "#/$defs/summaries" }, - "limit": { "type": "integer", "minimum": 0 }, - "offset": { "type": "integer", "minimum": 0 }, - "include_body": { "type": "boolean", "default": false }, - "frontmatter_mode": { - "enum": ["effective", "persisted", "both"], - "default": "effective" - }, - "presentation": { "$ref": "#/$defs/presentation" } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false - }, - "select": { - "type": "array", - "minItems": 1, - "items": { - "oneOf": [ - { "type": "string", "minLength": 1 }, - { "$ref": "#/$defs/selectExpression" } - ] - } - }, - "selectExpression": { - "type": "object", - "required": ["name", "expr"], - "properties": { - "name": { "$ref": "#/$defs/fieldName" }, - "expr": { "$ref": "#/$defs/expression" }, - "label": { "type": "string" }, - "description": { "type": "string" } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false - }, - "orderBy": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": ["field"], - "properties": { - "field": { "type": "string", "minLength": 1 }, - "direction": { "enum": ["asc", "desc"], "default": "asc" } - }, - "additionalProperties": false - } - }, - "groupBy": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": ["field"], - "properties": { - "field": { "type": "string", "minLength": 1 }, - "direction": { "enum": ["asc", "desc"], "default": "asc" } - }, - "additionalProperties": false - } - }, - "summaries": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#/$defs/summary" } - }, - "summary": { - "type": "object", - "required": ["field", "function"], - "properties": { - "field": { "type": "string", "minLength": 1 }, - "function": { "$ref": "#/$defs/identifier" }, - "name": { "$ref": "#/$defs/fieldName" }, - "label": { "type": "string" } - }, - "additionalProperties": false - }, - "presentation": { - "type": "object", - "required": ["type"], - "properties": { - "type": { "$ref": "#/$defs/identifier" }, - "fallback": { "$ref": "#/$defs/identifier" }, - "mappings": { - "type": "object", - "propertyNames": { "$ref": "#/$defs/fieldName" }, - "additionalProperties": { "type": "string", "minLength": 1 } - }, - "options": { - "type": "object", - "additionalProperties": true - } - }, - "patternProperties": { - "^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$": { "$ref": "#/$defs/extension" } - }, - "additionalProperties": false - } - } -} diff --git a/public/contracts/schemas/tasknotes.task.binding/0.3.0-rc.3.schema.json b/public/contracts/schemas/tasknotes.task.binding/0.3.0-rc.3.schema.json deleted file mode 100644 index af2bcc9..0000000 --- a/public/contracts/schemas/tasknotes.task.binding/0.3.0-rc.3.schema.json +++ /dev/null @@ -1,469 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json", - "title": "TaskNotes task data-contract binding", - "description": "Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3.", - "type": "object", - "required": [ - "profiles", - "capabilities", - "title", - "status", - "priority", - "recurrence", - "occurrences", - "links", - "archive", - "time_tracking", - "templating" - ], - "properties": { - "profiles": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "enum": [ - "core-lite", - "recurrence", - "templating", - "materialized-occurrences", - "extended" - ] - } - }, - "capabilities": { - "type": "array", - "uniqueItems": true, - "items": { - "enum": [ - "dependencies", - "reminders", - "attachments", - "links", - "time-tracking", - "materialized-occurrences", - "rename", - "archive", - "batch", - "concurrency", - "dry-run", - "migration", - "templating" - ] - } - }, - "title": { - "$ref": "#/$defs/titlePolicy" - }, - "status": { - "$ref": "#/$defs/statusPolicy" - }, - "priority": { - "$ref": "#/$defs/priorityPolicy" - }, - "recurrence": { - "$ref": "#/$defs/recurrencePolicy" - }, - "occurrences": { - "$ref": "#/$defs/occurrencePolicy" - }, - "links": { - "$ref": "#/$defs/linkPolicy" - }, - "archive": { - "$ref": "#/$defs/archivePolicy" - }, - "time_tracking": { - "$ref": "#/$defs/timeTrackingPolicy" - }, - "templating": { - "$ref": "#/$defs/templatingPolicy" - }, - "nlp": { - "$ref": "#/$defs/nlpPolicy" - } - }, - "additionalProperties": false, - "$defs": { - "nonEmptyString": { - "type": "string", - "minLength": 1 - }, - "stringSet": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "titlePolicy": { - "type": "object", - "required": [ - "storage" - ], - "properties": { - "storage": { - "enum": [ - "filename", - "frontmatter" - ] - }, - "filename_format": { - "enum": [ - "title", - "zettel", - "timestamp", - "uuid", - "custom" - ] - }, - "custom_filename_template": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "allOf": [ - { - "if": { - "properties": { - "filename_format": { - "const": "custom" - } - }, - "required": [ - "filename_format" - ] - }, - "then": { - "properties": { - "custom_filename_template": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "required": [ - "custom_filename_template" - ] - } - } - ], - "additionalProperties": true - }, - "statusDefinition": { - "type": "object", - "required": [ - "value", - "label", - "color", - "is_completed", - "is_skipped", - "exclude_from_cycle", - "order", - "auto_archive", - "auto_archive_delay_minutes" - ], - "properties": { - "value": { - "$ref": "#/$defs/nonEmptyString" - }, - "label": { - "type": "string" - }, - "color": { - "type": "string" - }, - "icon": { - "$ref": "#/$defs/nonEmptyString" - }, - "is_completed": { - "type": "boolean" - }, - "is_skipped": { - "type": "boolean" - }, - "exclude_from_cycle": { - "type": "boolean" - }, - "next_status": { - "$ref": "#/$defs/nonEmptyString" - }, - "order": { - "type": "number" - }, - "auto_archive": { - "type": "boolean" - }, - "auto_archive_delay_minutes": { - "type": "number", - "minimum": 0 - } - }, - "additionalProperties": true - }, - "statusPolicy": { - "type": "object", - "required": [ - "values", - "default", - "completed_values", - "definitions" - ], - "properties": { - "values": { - "$ref": "#/$defs/stringSet" - }, - "default": { - "$ref": "#/$defs/nonEmptyString" - }, - "completed_values": { - "$ref": "#/$defs/stringSet" - }, - "skipped_values": { - "$ref": "#/$defs/stringSet" - }, - "default_skipped": { - "$ref": "#/$defs/nonEmptyString" - }, - "definitions": { - "type": "array", - "items": { - "$ref": "#/$defs/statusDefinition" - } - } - }, - "additionalProperties": false - }, - "priorityDefinition": { - "type": "object", - "required": [ - "value", - "label", - "color", - "weight" - ], - "properties": { - "value": { - "$ref": "#/$defs/nonEmptyString" - }, - "label": { - "type": "string" - }, - "color": { - "type": "string" - }, - "icon": { - "$ref": "#/$defs/nonEmptyString" - }, - "weight": { - "type": "number" - } - }, - "additionalProperties": true - }, - "priorityPolicy": { - "type": "object", - "required": [ - "values", - "default", - "definitions" - ], - "properties": { - "values": { - "$ref": "#/$defs/stringSet" - }, - "default": { - "$ref": "#/$defs/nonEmptyString" - }, - "definitions": { - "type": "array", - "items": { - "$ref": "#/$defs/priorityDefinition" - } - } - }, - "additionalProperties": false - }, - "recurrencePolicy": { - "type": "object", - "required": [ - "syntax", - "maintain_due_date_offset", - "reset_body_checkboxes" - ], - "properties": { - "syntax": { - "const": "tasknotes" - }, - "maintain_due_date_offset": { - "type": "boolean" - }, - "reset_body_checkboxes": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "occurrencePolicy": { - "type": "object", - "required": [ - "identity_roles", - "default_materialization", - "default_next_trigger" - ], - "properties": { - "identity_roles": { - "const": [ - "recurrenceParent", - "occurrenceDate" - ] - }, - "default_materialization": { - "enum": [ - "manual", - "on_completion", - "rolling" - ] - }, - "default_next_trigger": { - "enum": [ - "completion", - "completion_or_skip" - ] - }, - "past_horizon": { - "$ref": "#/$defs/nonEmptyString" - }, - "future_horizon": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "additionalProperties": false - }, - "linkPolicy": { - "type": "object", - "required": [ - "accepted_formats", - "write_format" - ], - "properties": { - "accepted_formats": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "enum": [ - "wikilink", - "markdown" - ] - } - }, - "write_format": { - "enum": [ - "wikilink", - "markdown" - ] - } - }, - "additionalProperties": false - }, - "archivePolicy": { - "type": "object", - "required": [ - "archived_tag", - "move_on_archive" - ], - "properties": { - "archived_tag": { - "$ref": "#/$defs/nonEmptyString" - }, - "move_on_archive": { - "type": "boolean" - }, - "folder": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "additionalProperties": false - }, - "timeTrackingPolicy": { - "type": "object", - "required": [ - "auto_stop_on_complete" - ], - "properties": { - "auto_stop_on_complete": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "templatingPolicy": { - "type": "object", - "required": [ - "enabled", - "occurrence_enabled" - ], - "properties": { - "enabled": { - "type": "boolean" - }, - "template_path": { - "$ref": "#/$defs/nonEmptyString" - }, - "occurrence_enabled": { - "type": "boolean" - }, - "occurrence_template_path": { - "$ref": "#/$defs/nonEmptyString" - }, - "failure_mode": { - "enum": [ - "error", - "warning_fallback" - ] - }, - "unknown_variable_policy": { - "enum": [ - "preserve", - "empty" - ] - } - }, - "additionalProperties": false - }, - "nlpTrigger": { - "type": "object", - "required": [ - "property_id", - "trigger", - "enabled" - ], - "properties": { - "property_id": { - "$ref": "#/$defs/nonEmptyString" - }, - "trigger": { - "$ref": "#/$defs/nonEmptyString" - }, - "enabled": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "nlpPolicy": { - "type": "object", - "required": [ - "triggers" - ], - "properties": { - "triggers": { - "type": "array", - "items": { - "$ref": "#/$defs/nlpTrigger" - } - } - }, - "additionalProperties": false - } - } -} diff --git a/public/contracts/schemas/tasknotes.task.binding/0.3.0-rc.4.schema.json b/public/contracts/schemas/tasknotes.task.binding/0.3.0-rc.4.schema.json deleted file mode 100644 index af2bcc9..0000000 --- a/public/contracts/schemas/tasknotes.task.binding/0.3.0-rc.4.schema.json +++ /dev/null @@ -1,469 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json", - "title": "TaskNotes task data-contract binding", - "description": "Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3.", - "type": "object", - "required": [ - "profiles", - "capabilities", - "title", - "status", - "priority", - "recurrence", - "occurrences", - "links", - "archive", - "time_tracking", - "templating" - ], - "properties": { - "profiles": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "enum": [ - "core-lite", - "recurrence", - "templating", - "materialized-occurrences", - "extended" - ] - } - }, - "capabilities": { - "type": "array", - "uniqueItems": true, - "items": { - "enum": [ - "dependencies", - "reminders", - "attachments", - "links", - "time-tracking", - "materialized-occurrences", - "rename", - "archive", - "batch", - "concurrency", - "dry-run", - "migration", - "templating" - ] - } - }, - "title": { - "$ref": "#/$defs/titlePolicy" - }, - "status": { - "$ref": "#/$defs/statusPolicy" - }, - "priority": { - "$ref": "#/$defs/priorityPolicy" - }, - "recurrence": { - "$ref": "#/$defs/recurrencePolicy" - }, - "occurrences": { - "$ref": "#/$defs/occurrencePolicy" - }, - "links": { - "$ref": "#/$defs/linkPolicy" - }, - "archive": { - "$ref": "#/$defs/archivePolicy" - }, - "time_tracking": { - "$ref": "#/$defs/timeTrackingPolicy" - }, - "templating": { - "$ref": "#/$defs/templatingPolicy" - }, - "nlp": { - "$ref": "#/$defs/nlpPolicy" - } - }, - "additionalProperties": false, - "$defs": { - "nonEmptyString": { - "type": "string", - "minLength": 1 - }, - "stringSet": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "titlePolicy": { - "type": "object", - "required": [ - "storage" - ], - "properties": { - "storage": { - "enum": [ - "filename", - "frontmatter" - ] - }, - "filename_format": { - "enum": [ - "title", - "zettel", - "timestamp", - "uuid", - "custom" - ] - }, - "custom_filename_template": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "allOf": [ - { - "if": { - "properties": { - "filename_format": { - "const": "custom" - } - }, - "required": [ - "filename_format" - ] - }, - "then": { - "properties": { - "custom_filename_template": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "required": [ - "custom_filename_template" - ] - } - } - ], - "additionalProperties": true - }, - "statusDefinition": { - "type": "object", - "required": [ - "value", - "label", - "color", - "is_completed", - "is_skipped", - "exclude_from_cycle", - "order", - "auto_archive", - "auto_archive_delay_minutes" - ], - "properties": { - "value": { - "$ref": "#/$defs/nonEmptyString" - }, - "label": { - "type": "string" - }, - "color": { - "type": "string" - }, - "icon": { - "$ref": "#/$defs/nonEmptyString" - }, - "is_completed": { - "type": "boolean" - }, - "is_skipped": { - "type": "boolean" - }, - "exclude_from_cycle": { - "type": "boolean" - }, - "next_status": { - "$ref": "#/$defs/nonEmptyString" - }, - "order": { - "type": "number" - }, - "auto_archive": { - "type": "boolean" - }, - "auto_archive_delay_minutes": { - "type": "number", - "minimum": 0 - } - }, - "additionalProperties": true - }, - "statusPolicy": { - "type": "object", - "required": [ - "values", - "default", - "completed_values", - "definitions" - ], - "properties": { - "values": { - "$ref": "#/$defs/stringSet" - }, - "default": { - "$ref": "#/$defs/nonEmptyString" - }, - "completed_values": { - "$ref": "#/$defs/stringSet" - }, - "skipped_values": { - "$ref": "#/$defs/stringSet" - }, - "default_skipped": { - "$ref": "#/$defs/nonEmptyString" - }, - "definitions": { - "type": "array", - "items": { - "$ref": "#/$defs/statusDefinition" - } - } - }, - "additionalProperties": false - }, - "priorityDefinition": { - "type": "object", - "required": [ - "value", - "label", - "color", - "weight" - ], - "properties": { - "value": { - "$ref": "#/$defs/nonEmptyString" - }, - "label": { - "type": "string" - }, - "color": { - "type": "string" - }, - "icon": { - "$ref": "#/$defs/nonEmptyString" - }, - "weight": { - "type": "number" - } - }, - "additionalProperties": true - }, - "priorityPolicy": { - "type": "object", - "required": [ - "values", - "default", - "definitions" - ], - "properties": { - "values": { - "$ref": "#/$defs/stringSet" - }, - "default": { - "$ref": "#/$defs/nonEmptyString" - }, - "definitions": { - "type": "array", - "items": { - "$ref": "#/$defs/priorityDefinition" - } - } - }, - "additionalProperties": false - }, - "recurrencePolicy": { - "type": "object", - "required": [ - "syntax", - "maintain_due_date_offset", - "reset_body_checkboxes" - ], - "properties": { - "syntax": { - "const": "tasknotes" - }, - "maintain_due_date_offset": { - "type": "boolean" - }, - "reset_body_checkboxes": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "occurrencePolicy": { - "type": "object", - "required": [ - "identity_roles", - "default_materialization", - "default_next_trigger" - ], - "properties": { - "identity_roles": { - "const": [ - "recurrenceParent", - "occurrenceDate" - ] - }, - "default_materialization": { - "enum": [ - "manual", - "on_completion", - "rolling" - ] - }, - "default_next_trigger": { - "enum": [ - "completion", - "completion_or_skip" - ] - }, - "past_horizon": { - "$ref": "#/$defs/nonEmptyString" - }, - "future_horizon": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "additionalProperties": false - }, - "linkPolicy": { - "type": "object", - "required": [ - "accepted_formats", - "write_format" - ], - "properties": { - "accepted_formats": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "enum": [ - "wikilink", - "markdown" - ] - } - }, - "write_format": { - "enum": [ - "wikilink", - "markdown" - ] - } - }, - "additionalProperties": false - }, - "archivePolicy": { - "type": "object", - "required": [ - "archived_tag", - "move_on_archive" - ], - "properties": { - "archived_tag": { - "$ref": "#/$defs/nonEmptyString" - }, - "move_on_archive": { - "type": "boolean" - }, - "folder": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "additionalProperties": false - }, - "timeTrackingPolicy": { - "type": "object", - "required": [ - "auto_stop_on_complete" - ], - "properties": { - "auto_stop_on_complete": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "templatingPolicy": { - "type": "object", - "required": [ - "enabled", - "occurrence_enabled" - ], - "properties": { - "enabled": { - "type": "boolean" - }, - "template_path": { - "$ref": "#/$defs/nonEmptyString" - }, - "occurrence_enabled": { - "type": "boolean" - }, - "occurrence_template_path": { - "$ref": "#/$defs/nonEmptyString" - }, - "failure_mode": { - "enum": [ - "error", - "warning_fallback" - ] - }, - "unknown_variable_policy": { - "enum": [ - "preserve", - "empty" - ] - } - }, - "additionalProperties": false - }, - "nlpTrigger": { - "type": "object", - "required": [ - "property_id", - "trigger", - "enabled" - ], - "properties": { - "property_id": { - "$ref": "#/$defs/nonEmptyString" - }, - "trigger": { - "$ref": "#/$defs/nonEmptyString" - }, - "enabled": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "nlpPolicy": { - "type": "object", - "required": [ - "triggers" - ], - "properties": { - "triggers": { - "type": "array", - "items": { - "$ref": "#/$defs/nlpTrigger" - } - } - }, - "additionalProperties": false - } - } -} diff --git a/public/contracts/schemas/tasknotes.task.binding/0.3.0-rc.5.schema.json b/public/contracts/schemas/tasknotes.task.binding/0.3.0-rc.5.schema.json deleted file mode 100644 index af2bcc9..0000000 --- a/public/contracts/schemas/tasknotes.task.binding/0.3.0-rc.5.schema.json +++ /dev/null @@ -1,469 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://tasknotes.dev/schemas/tasknotes-task-binding.schema.json", - "title": "TaskNotes task data-contract binding", - "description": "Semantic configuration supplied by an mdbase type that implements tasknotes.task 0.3.0-rc.3.", - "type": "object", - "required": [ - "profiles", - "capabilities", - "title", - "status", - "priority", - "recurrence", - "occurrences", - "links", - "archive", - "time_tracking", - "templating" - ], - "properties": { - "profiles": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "enum": [ - "core-lite", - "recurrence", - "templating", - "materialized-occurrences", - "extended" - ] - } - }, - "capabilities": { - "type": "array", - "uniqueItems": true, - "items": { - "enum": [ - "dependencies", - "reminders", - "attachments", - "links", - "time-tracking", - "materialized-occurrences", - "rename", - "archive", - "batch", - "concurrency", - "dry-run", - "migration", - "templating" - ] - } - }, - "title": { - "$ref": "#/$defs/titlePolicy" - }, - "status": { - "$ref": "#/$defs/statusPolicy" - }, - "priority": { - "$ref": "#/$defs/priorityPolicy" - }, - "recurrence": { - "$ref": "#/$defs/recurrencePolicy" - }, - "occurrences": { - "$ref": "#/$defs/occurrencePolicy" - }, - "links": { - "$ref": "#/$defs/linkPolicy" - }, - "archive": { - "$ref": "#/$defs/archivePolicy" - }, - "time_tracking": { - "$ref": "#/$defs/timeTrackingPolicy" - }, - "templating": { - "$ref": "#/$defs/templatingPolicy" - }, - "nlp": { - "$ref": "#/$defs/nlpPolicy" - } - }, - "additionalProperties": false, - "$defs": { - "nonEmptyString": { - "type": "string", - "minLength": 1 - }, - "stringSet": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "titlePolicy": { - "type": "object", - "required": [ - "storage" - ], - "properties": { - "storage": { - "enum": [ - "filename", - "frontmatter" - ] - }, - "filename_format": { - "enum": [ - "title", - "zettel", - "timestamp", - "uuid", - "custom" - ] - }, - "custom_filename_template": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "allOf": [ - { - "if": { - "properties": { - "filename_format": { - "const": "custom" - } - }, - "required": [ - "filename_format" - ] - }, - "then": { - "properties": { - "custom_filename_template": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "required": [ - "custom_filename_template" - ] - } - } - ], - "additionalProperties": true - }, - "statusDefinition": { - "type": "object", - "required": [ - "value", - "label", - "color", - "is_completed", - "is_skipped", - "exclude_from_cycle", - "order", - "auto_archive", - "auto_archive_delay_minutes" - ], - "properties": { - "value": { - "$ref": "#/$defs/nonEmptyString" - }, - "label": { - "type": "string" - }, - "color": { - "type": "string" - }, - "icon": { - "$ref": "#/$defs/nonEmptyString" - }, - "is_completed": { - "type": "boolean" - }, - "is_skipped": { - "type": "boolean" - }, - "exclude_from_cycle": { - "type": "boolean" - }, - "next_status": { - "$ref": "#/$defs/nonEmptyString" - }, - "order": { - "type": "number" - }, - "auto_archive": { - "type": "boolean" - }, - "auto_archive_delay_minutes": { - "type": "number", - "minimum": 0 - } - }, - "additionalProperties": true - }, - "statusPolicy": { - "type": "object", - "required": [ - "values", - "default", - "completed_values", - "definitions" - ], - "properties": { - "values": { - "$ref": "#/$defs/stringSet" - }, - "default": { - "$ref": "#/$defs/nonEmptyString" - }, - "completed_values": { - "$ref": "#/$defs/stringSet" - }, - "skipped_values": { - "$ref": "#/$defs/stringSet" - }, - "default_skipped": { - "$ref": "#/$defs/nonEmptyString" - }, - "definitions": { - "type": "array", - "items": { - "$ref": "#/$defs/statusDefinition" - } - } - }, - "additionalProperties": false - }, - "priorityDefinition": { - "type": "object", - "required": [ - "value", - "label", - "color", - "weight" - ], - "properties": { - "value": { - "$ref": "#/$defs/nonEmptyString" - }, - "label": { - "type": "string" - }, - "color": { - "type": "string" - }, - "icon": { - "$ref": "#/$defs/nonEmptyString" - }, - "weight": { - "type": "number" - } - }, - "additionalProperties": true - }, - "priorityPolicy": { - "type": "object", - "required": [ - "values", - "default", - "definitions" - ], - "properties": { - "values": { - "$ref": "#/$defs/stringSet" - }, - "default": { - "$ref": "#/$defs/nonEmptyString" - }, - "definitions": { - "type": "array", - "items": { - "$ref": "#/$defs/priorityDefinition" - } - } - }, - "additionalProperties": false - }, - "recurrencePolicy": { - "type": "object", - "required": [ - "syntax", - "maintain_due_date_offset", - "reset_body_checkboxes" - ], - "properties": { - "syntax": { - "const": "tasknotes" - }, - "maintain_due_date_offset": { - "type": "boolean" - }, - "reset_body_checkboxes": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "occurrencePolicy": { - "type": "object", - "required": [ - "identity_roles", - "default_materialization", - "default_next_trigger" - ], - "properties": { - "identity_roles": { - "const": [ - "recurrenceParent", - "occurrenceDate" - ] - }, - "default_materialization": { - "enum": [ - "manual", - "on_completion", - "rolling" - ] - }, - "default_next_trigger": { - "enum": [ - "completion", - "completion_or_skip" - ] - }, - "past_horizon": { - "$ref": "#/$defs/nonEmptyString" - }, - "future_horizon": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "additionalProperties": false - }, - "linkPolicy": { - "type": "object", - "required": [ - "accepted_formats", - "write_format" - ], - "properties": { - "accepted_formats": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "enum": [ - "wikilink", - "markdown" - ] - } - }, - "write_format": { - "enum": [ - "wikilink", - "markdown" - ] - } - }, - "additionalProperties": false - }, - "archivePolicy": { - "type": "object", - "required": [ - "archived_tag", - "move_on_archive" - ], - "properties": { - "archived_tag": { - "$ref": "#/$defs/nonEmptyString" - }, - "move_on_archive": { - "type": "boolean" - }, - "folder": { - "$ref": "#/$defs/nonEmptyString" - } - }, - "additionalProperties": false - }, - "timeTrackingPolicy": { - "type": "object", - "required": [ - "auto_stop_on_complete" - ], - "properties": { - "auto_stop_on_complete": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "templatingPolicy": { - "type": "object", - "required": [ - "enabled", - "occurrence_enabled" - ], - "properties": { - "enabled": { - "type": "boolean" - }, - "template_path": { - "$ref": "#/$defs/nonEmptyString" - }, - "occurrence_enabled": { - "type": "boolean" - }, - "occurrence_template_path": { - "$ref": "#/$defs/nonEmptyString" - }, - "failure_mode": { - "enum": [ - "error", - "warning_fallback" - ] - }, - "unknown_variable_policy": { - "enum": [ - "preserve", - "empty" - ] - } - }, - "additionalProperties": false - }, - "nlpTrigger": { - "type": "object", - "required": [ - "property_id", - "trigger", - "enabled" - ], - "properties": { - "property_id": { - "$ref": "#/$defs/nonEmptyString" - }, - "trigger": { - "$ref": "#/$defs/nonEmptyString" - }, - "enabled": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "nlpPolicy": { - "type": "object", - "required": [ - "triggers" - ], - "properties": { - "triggers": { - "type": "array", - "items": { - "$ref": "#/$defs/nlpTrigger" - } - } - }, - "additionalProperties": false - } - } -} diff --git a/public/contracts/schemas/tasknotes.task/0.3.0-rc.3.schema.json b/public/contracts/schemas/tasknotes.task/0.3.0-rc.3.schema.json deleted file mode 100644 index 9c4f1b9..0000000 --- a/public/contracts/schemas/tasknotes.task/0.3.0-rc.3.schema.json +++ /dev/null @@ -1,192 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://tasknotes.dev/schemas/tasknotes-task.schema.json", - "title": "TaskNotes portable task view", - "description": "The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.3 record contract.", - "type": "object", - "required": [ - "status", - "dateCreated" - ], - "additionalProperties": false, - "properties": { - "id": { - "type": "string", - "minLength": 1 - }, - "title": { - "type": "string", - "minLength": 1 - }, - "status": { - "type": "string", - "minLength": 1 - }, - "priority": { - "type": "string", - "minLength": 1 - }, - "due": { - "anyOf": [ - { - "type": "string", - "format": "date" - }, - { - "type": "string", - "format": "date-time" - } - ] - }, - "scheduled": { - "anyOf": [ - { - "type": "string", - "format": "date" - }, - { - "type": "string", - "format": "date-time" - } - ] - }, - "contexts": { - "type": "array", - "items": { - "type": "string" - } - }, - "projects": { - "type": "array", - "items": { - "type": "string" - } - }, - "attachments": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "minLength": 1 - } - }, - "timeEstimate": { - "type": "integer", - "minimum": 0 - }, - "completedDate": { - "type": "string", - "format": "date" - }, - "dateCreated": { - "type": "string", - "format": "date-time" - }, - "dateModified": { - "type": "string", - "format": "date-time" - }, - "recurrence": { - "type": "string" - }, - "recurrenceAnchor": { - "enum": [ - "scheduled", - "completion" - ] - }, - "recurrenceParent": { - "type": "string" - }, - "occurrenceDate": { - "type": "string", - "format": "date" - }, - "occurrenceMaterialization": { - "enum": [ - "manual", - "on_completion", - "rolling" - ] - }, - "occurrenceNextTrigger": { - "enum": [ - "completion", - "completion_or_skip" - ] - }, - "occurrenceTemplate": { - "type": "string" - }, - "occurrencePastHorizon": { - "type": "string" - }, - "occurrenceFutureHorizon": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "timeEntries": { - "type": "array", - "items": { - "type": "object" - } - }, - "reminders": { - "type": "array", - "items": { - "type": "object" - } - }, - "blockedBy": { - "type": "array", - "items": { - "type": "object" - } - }, - "completeInstances": { - "type": "array", - "items": { - "type": "string", - "format": "date" - } - }, - "skippedInstances": { - "type": "array", - "items": { - "type": "string", - "format": "date" - } - }, - "icsEventId": { - "type": "array", - "items": { - "type": "string" - } - }, - "googleCalendarEventId": { - "type": "string" - }, - "googleCalendarExceptionEventId": { - "type": "string" - }, - "googleCalendarExceptionOriginalScheduled": { - "type": "string", - "format": "date" - }, - "googleCalendarMovedOriginalDates": { - "type": "array", - "items": { - "type": "string", - "format": "date" - } - }, - "sortOrder": { - "type": "string" - } - } -} diff --git a/public/contracts/schemas/tasknotes.task/0.3.0-rc.4.schema.json b/public/contracts/schemas/tasknotes.task/0.3.0-rc.4.schema.json deleted file mode 100644 index 56c1803..0000000 --- a/public/contracts/schemas/tasknotes.task/0.3.0-rc.4.schema.json +++ /dev/null @@ -1,202 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://tasknotes.dev/schemas/tasknotes-task.schema.json", - "title": "TaskNotes portable task view", - "description": "The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.4 record contract.", - "type": "object", - "required": [ - "status", - "dateCreated" - ], - "additionalProperties": false, - "properties": { - "id": { - "type": "string", - "minLength": 1 - }, - "title": { - "type": "string", - "minLength": 1 - }, - "status": { - "type": "string", - "minLength": 1 - }, - "priority": { - "type": "string", - "minLength": 1 - }, - "due": { - "anyOf": [ - { - "type": "string", - "format": "date" - }, - { - "type": "string", - "format": "date-time" - } - ] - }, - "scheduled": { - "anyOf": [ - { - "type": "string", - "format": "date" - }, - { - "type": "string", - "format": "date-time" - } - ] - }, - "contexts": { - "type": "array", - "items": { - "type": "string" - } - }, - "projects": { - "type": "array", - "items": { - "type": "string" - } - }, - "assignees": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "minLength": 1, - "pattern": "\\S" - }, - "description": "Stable mdbase.person IDs. These references never grant collection access." - }, - "attachments": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "minLength": 1 - } - }, - "timeEstimate": { - "type": "integer", - "minimum": 0 - }, - "completedDate": { - "type": "string", - "format": "date" - }, - "dateCreated": { - "type": "string", - "format": "date-time" - }, - "dateModified": { - "type": "string", - "format": "date-time" - }, - "recurrence": { - "type": "string" - }, - "recurrenceAnchor": { - "enum": [ - "scheduled", - "completion" - ] - }, - "recurrenceParent": { - "type": "string" - }, - "occurrenceDate": { - "type": "string", - "format": "date" - }, - "occurrenceMaterialization": { - "enum": [ - "manual", - "on_completion", - "rolling" - ] - }, - "occurrenceNextTrigger": { - "enum": [ - "completion", - "completion_or_skip" - ] - }, - "occurrenceTemplate": { - "type": "string" - }, - "occurrencePastHorizon": { - "type": "string" - }, - "occurrenceFutureHorizon": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "timeEntries": { - "type": "array", - "items": { - "type": "object" - } - }, - "reminders": { - "type": "array", - "items": { - "type": "object" - } - }, - "blockedBy": { - "type": "array", - "items": { - "type": "object" - } - }, - "completeInstances": { - "type": "array", - "items": { - "type": "string", - "format": "date" - } - }, - "skippedInstances": { - "type": "array", - "items": { - "type": "string", - "format": "date" - } - }, - "icsEventId": { - "type": "array", - "items": { - "type": "string" - } - }, - "googleCalendarEventId": { - "type": "string" - }, - "googleCalendarExceptionEventId": { - "type": "string" - }, - "googleCalendarExceptionOriginalScheduled": { - "type": "string", - "format": "date" - }, - "googleCalendarMovedOriginalDates": { - "type": "array", - "items": { - "type": "string", - "format": "date" - } - }, - "sortOrder": { - "type": "string" - } - } -} diff --git a/public/contracts/schemas/tasknotes.task/0.3.0-rc.5.schema.json b/public/contracts/schemas/tasknotes.task/0.3.0-rc.5.schema.json deleted file mode 100644 index 8944161..0000000 --- a/public/contracts/schemas/tasknotes.task/0.3.0-rc.5.schema.json +++ /dev/null @@ -1,202 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://tasknotes.dev/schemas/tasknotes-task.schema.json", - "title": "TaskNotes portable task view", - "description": "The storage-neutral record view exposed by the tasknotes.task 0.3.0-rc.5 record contract.", - "type": "object", - "required": [ - "status", - "dateCreated" - ], - "additionalProperties": false, - "properties": { - "id": { - "type": "string", - "minLength": 1 - }, - "title": { - "type": "string", - "minLength": 1 - }, - "status": { - "type": "string", - "minLength": 1 - }, - "priority": { - "type": "string", - "minLength": 1 - }, - "due": { - "anyOf": [ - { - "type": "string", - "format": "date" - }, - { - "type": "string", - "format": "date-time" - } - ] - }, - "scheduled": { - "anyOf": [ - { - "type": "string", - "format": "date" - }, - { - "type": "string", - "format": "date-time" - } - ] - }, - "contexts": { - "type": "array", - "items": { - "type": "string" - } - }, - "projects": { - "type": "array", - "items": { - "type": "string" - } - }, - "assignees": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "minLength": 1, - "pattern": "\\S" - }, - "description": "Links to records implementing mdbase.person, such as [[Alex Rivera]]. Implementing types declare this field in collection.links. These references never grant collection access." - }, - "attachments": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "minLength": 1 - } - }, - "timeEstimate": { - "type": "integer", - "minimum": 0 - }, - "completedDate": { - "type": "string", - "format": "date" - }, - "dateCreated": { - "type": "string", - "format": "date-time" - }, - "dateModified": { - "type": "string", - "format": "date-time" - }, - "recurrence": { - "type": "string" - }, - "recurrenceAnchor": { - "enum": [ - "scheduled", - "completion" - ] - }, - "recurrenceParent": { - "type": "string" - }, - "occurrenceDate": { - "type": "string", - "format": "date" - }, - "occurrenceMaterialization": { - "enum": [ - "manual", - "on_completion", - "rolling" - ] - }, - "occurrenceNextTrigger": { - "enum": [ - "completion", - "completion_or_skip" - ] - }, - "occurrenceTemplate": { - "type": "string" - }, - "occurrencePastHorizon": { - "type": "string" - }, - "occurrenceFutureHorizon": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "timeEntries": { - "type": "array", - "items": { - "type": "object" - } - }, - "reminders": { - "type": "array", - "items": { - "type": "object" - } - }, - "blockedBy": { - "type": "array", - "items": { - "type": "object" - } - }, - "completeInstances": { - "type": "array", - "items": { - "type": "string", - "format": "date" - } - }, - "skippedInstances": { - "type": "array", - "items": { - "type": "string", - "format": "date" - } - }, - "icsEventId": { - "type": "array", - "items": { - "type": "string" - } - }, - "googleCalendarEventId": { - "type": "string" - }, - "googleCalendarExceptionEventId": { - "type": "string" - }, - "googleCalendarExceptionOriginalScheduled": { - "type": "string", - "format": "date" - }, - "googleCalendarMovedOriginalDates": { - "type": "array", - "items": { - "type": "string", - "format": "date" - } - }, - "sortOrder": { - "type": "string" - } - } -} diff --git a/public/interop/schemas/v0.1/README.md b/public/interop/schemas/v0.1/README.md deleted file mode 100644 index 0626941..0000000 --- a/public/interop/schemas/v0.1/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Interoperability profile schemas - -These schemas define mdbase event/action interoperability profile `0.1`. -`profile.schema.json` contains the shared definitions and complete envelope -union. The smaller files are stable entry points for one envelope or -declaration. - -Implementations preload the profile schema before compiling an entry-point -schema. They never fetch schema references from the network. diff --git a/public/interop/schemas/v0.1/action-cancellation.schema.json b/public/interop/schemas/v0.1/action-cancellation.schema.json deleted file mode 100644 index d195904..0000000 --- a/public/interop/schemas/v0.1/action-cancellation.schema.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/interop/v0.1/action-cancellation.schema.json", - "title": "mdbase action cancellation request", - "$ref": "profile.schema.json#/$defs/actionCancellation" -} diff --git a/public/interop/schemas/v0.1/action-invocation.schema.json b/public/interop/schemas/v0.1/action-invocation.schema.json deleted file mode 100644 index 748c3b5..0000000 --- a/public/interop/schemas/v0.1/action-invocation.schema.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/interop/v0.1/action-invocation.schema.json", - "title": "mdbase admitted action invocation", - "$ref": "profile.schema.json#/$defs/actionInvocation" -} diff --git a/public/interop/schemas/v0.1/action-outcome.schema.json b/public/interop/schemas/v0.1/action-outcome.schema.json deleted file mode 100644 index 6c8248d..0000000 --- a/public/interop/schemas/v0.1/action-outcome.schema.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/interop/v0.1/action-outcome.schema.json", - "title": "mdbase action outcome", - "$ref": "profile.schema.json#/$defs/actionOutcome" -} diff --git a/public/interop/schemas/v0.1/action-provider-declaration.schema.json b/public/interop/schemas/v0.1/action-provider-declaration.schema.json deleted file mode 100644 index 19beaf5..0000000 --- a/public/interop/schemas/v0.1/action-provider-declaration.schema.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/interop/v0.1/action-provider-declaration.schema.json", - "title": "mdbase action-provider declaration", - "$ref": "profile.schema.json#/$defs/actionProviderDeclaration" -} diff --git a/public/interop/schemas/v0.1/action-request.schema.json b/public/interop/schemas/v0.1/action-request.schema.json deleted file mode 100644 index 28a95e9..0000000 --- a/public/interop/schemas/v0.1/action-request.schema.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/interop/v0.1/action-request.schema.json", - "title": "mdbase action request", - "$ref": "profile.schema.json#/$defs/actionRequest" -} diff --git a/public/interop/schemas/v0.1/conformance-claim.schema.json b/public/interop/schemas/v0.1/conformance-claim.schema.json deleted file mode 100644 index 7625af1..0000000 --- a/public/interop/schemas/v0.1/conformance-claim.schema.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/interop/v0.1/conformance-claim.schema.json", - "title": "mdbase interoperability conformance claim", - "$ref": "profile.schema.json#/$defs/conformanceClaim" -} diff --git a/public/interop/schemas/v0.1/event-source-declaration.schema.json b/public/interop/schemas/v0.1/event-source-declaration.schema.json deleted file mode 100644 index 4f11f93..0000000 --- a/public/interop/schemas/v0.1/event-source-declaration.schema.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/interop/v0.1/event-source-declaration.schema.json", - "title": "mdbase event-source declaration", - "$ref": "profile.schema.json#/$defs/eventSourceDeclaration" -} diff --git a/public/interop/schemas/v0.1/event.schema.json b/public/interop/schemas/v0.1/event.schema.json deleted file mode 100644 index e66cd0e..0000000 --- a/public/interop/schemas/v0.1/event.schema.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/interop/v0.1/event.schema.json", - "title": "mdbase CloudEvents event envelope", - "$ref": "profile.schema.json#/$defs/event" -} diff --git a/public/interop/schemas/v0.1/profile.schema.json b/public/interop/schemas/v0.1/profile.schema.json deleted file mode 100644 index 9132197..0000000 --- a/public/interop/schemas/v0.1/profile.schema.json +++ /dev/null @@ -1,457 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/interop/v0.1/profile.schema.json", - "title": "mdbase event and action interoperability profile 0.1", - "oneOf": [ - { "$ref": "#/$defs/event" }, - { "$ref": "#/$defs/actionRequest" }, - { "$ref": "#/$defs/actionInvocation" }, - { "$ref": "#/$defs/actionOutcome" }, - { "$ref": "#/$defs/actionCancellation" }, - { "$ref": "#/$defs/eventSourceDeclaration" }, - { "$ref": "#/$defs/actionProviderDeclaration" }, - { "$ref": "#/$defs/conformanceClaim" } - ], - "$defs": { - "contractId": { - "type": "string", - "minLength": 3, - "maxLength": 128, - "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "semanticVersionRequirement": { - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^(?:[\\^~=]?(?:0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?|(?:>=|<=|>|<|=)(?:0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?: (?:>=|<=|>|<|=)(?:0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?)*)$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "portableId": { - "type": "string", - "minLength": 1, - "maxLength": 256, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@/-]*$" - }, - "exactContract": { - "type": "object", - "required": ["id", "version", "digest"], - "properties": { - "id": { "$ref": "#/$defs/contractId" }, - "version": { "$ref": "#/$defs/semanticVersion" }, - "digest": { "$ref": "#/$defs/digest" } - }, - "additionalProperties": false - }, - "contractRequirement": { - "type": "object", - "required": ["id", "version"], - "properties": { - "id": { "$ref": "#/$defs/contractId" }, - "version": { "$ref": "#/$defs/semanticVersionRequirement" }, - "digest": { "$ref": "#/$defs/digest" } - }, - "additionalProperties": false - }, - "implementationIdentity": { - "type": "object", - "required": ["application", "implementation", "version"], - "properties": { - "application": { "$ref": "#/$defs/portableId" }, - "implementation": { "$ref": "#/$defs/portableId" }, - "version": { "$ref": "#/$defs/semanticVersion" }, - "instance_id": { "$ref": "#/$defs/portableId" } - }, - "additionalProperties": false - }, - "transportCapabilities": { - "type": "object", - "required": ["delivery", "ordering", "cancellation", "deadlines"], - "properties": { - "delivery": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "enum": ["ephemeral", "at_least_once", "durable_cursor", "offline_queue"] - } - }, - "ordering": { - "type": "array", - "uniqueItems": true, - "items": { - "enum": ["none", "source", "subject"] - } - }, - "cancellation": { "type": "boolean" }, - "deadlines": { "type": "boolean" }, - "provider_discovery": { "type": "boolean" }, - "max_payload_bytes": { "type": "integer", "minimum": 1 }, - "outcome_retention_seconds": { "type": "integer", "minimum": 0 }, - "request_deduplication": { "type": "boolean" }, - "cross_process_identity": { "type": "boolean" } - }, - "additionalProperties": false - }, - "extensionValue": { - "oneOf": [ - { "type": "null" }, - { "type": "boolean" }, - { "type": "integer" }, - { "type": "number" }, - { "type": "string" } - ] - }, - "event": { - "title": "mdbase CloudEvents event envelope", - "type": "object", - "required": [ - "specversion", - "id", - "source", - "type", - "time", - "datacontenttype", - "dataschema", - "data", - "mdbaseprofile", - "mdbasecontractversion", - "mdbasecontractdigest", - "mdbaseapplication", - "mdbaseimplementation", - "mdbaseimplementationversion" - ], - "properties": { - "specversion": { "const": "1.0" }, - "id": { "$ref": "#/$defs/portableId" }, - "source": { "type": "string", "format": "uri-reference", "minLength": 1 }, - "type": { "$ref": "#/$defs/contractId" }, - "time": { "type": "string", "format": "date-time" }, - "subject": { "type": "string", "format": "uri-reference", "minLength": 1 }, - "datacontenttype": { "const": "application/json" }, - "dataschema": { "type": "string", "format": "uri", "minLength": 1 }, - "data": true, - "mdbaseprofile": { "const": "0.1" }, - "mdbasecontractversion": { "$ref": "#/$defs/semanticVersion" }, - "mdbasecontractdigest": { "$ref": "#/$defs/digest" }, - "mdbaseapplication": { "$ref": "#/$defs/portableId" }, - "mdbaseimplementation": { "$ref": "#/$defs/portableId" }, - "mdbaseimplementationversion": { "$ref": "#/$defs/semanticVersion" }, - "mdbaseinstanceid": { "$ref": "#/$defs/portableId" }, - "correlationid": { "$ref": "#/$defs/portableId" }, - "causationid": { "$ref": "#/$defs/portableId" } - }, - "propertyNames": { "pattern": "^[a-z0-9]+$" }, - "additionalProperties": { "$ref": "#/$defs/extensionValue" } - }, - "actionRequest": { - "title": "mdbase action request", - "type": "object", - "required": [ - "kind", - "profile_version", - "request_id", - "contract", - "caller", - "created_at", - "input" - ], - "properties": { - "kind": { "const": "mdbase.action.request" }, - "profile_version": { "const": "0.1" }, - "request_id": { "$ref": "#/$defs/portableId" }, - "contract": { "$ref": "#/$defs/contractRequirement" }, - "caller": { "$ref": "#/$defs/implementationIdentity" }, - "created_at": { "type": "string", "format": "date-time" }, - "correlation_id": { "$ref": "#/$defs/portableId" }, - "causation_id": { "$ref": "#/$defs/portableId" }, - "subject": { "type": "string", "format": "uri-reference", "minLength": 1 }, - "idempotency_key": { "type": "string", "minLength": 1, "maxLength": 512 }, - "deadline": { "type": "string", "format": "date-time" }, - "requested_provider": { - "type": "object", - "properties": { - "application": { "$ref": "#/$defs/portableId" }, - "implementation": { "$ref": "#/$defs/portableId" }, - "instance_id": { "$ref": "#/$defs/portableId" } - }, - "minProperties": 1, - "additionalProperties": false - }, - "authorization_context": { - "type": "string", - "format": "uri-reference", - "minLength": 1 - }, - "input": true - }, - "additionalProperties": false - }, - "actionInvocation": { - "title": "mdbase admitted action invocation", - "type": "object", - "required": [ - "kind", - "profile_version", - "invocation_id", - "attempt_id", - "request_id", - "contract", - "caller", - "provider", - "provider_declaration_digest", - "handler_id", - "admitted_at", - "input" - ], - "properties": { - "kind": { "const": "mdbase.action.invocation" }, - "profile_version": { "const": "0.1" }, - "invocation_id": { "$ref": "#/$defs/portableId" }, - "attempt_id": { "$ref": "#/$defs/portableId" }, - "request_id": { "$ref": "#/$defs/portableId" }, - "contract": { "$ref": "#/$defs/exactContract" }, - "caller": { "$ref": "#/$defs/implementationIdentity" }, - "provider": { "$ref": "#/$defs/implementationIdentity" }, - "provider_declaration_digest": { "$ref": "#/$defs/digest" }, - "handler_id": { "$ref": "#/$defs/portableId" }, - "admitted_at": { "type": "string", "format": "date-time" }, - "correlation_id": { "$ref": "#/$defs/portableId" }, - "causation_id": { "$ref": "#/$defs/portableId" }, - "subject": { "type": "string", "format": "uri-reference", "minLength": 1 }, - "idempotency_key": { "type": "string", "minLength": 1, "maxLength": 512 }, - "deadline": { "type": "string", "format": "date-time" }, - "authorization_context": { - "type": "string", - "format": "uri-reference", - "minLength": 1 - }, - "input": true - }, - "additionalProperties": false - }, - "portableError": { - "type": "object", - "required": ["code", "message"], - "properties": { - "code": { - "enum": [ - "unknown_contract", - "unsupported_contract_version", - "contract_digest_conflict", - "invalid_event_data", - "invalid_action_input", - "invalid_action_output", - "no_provider", - "ambiguous_provider", - "requested_provider_unavailable", - "unauthorized", - "capability_denied", - "request_rejected", - "deadline_exceeded", - "cancellation_unsupported", - "cancelled", - "handler_failure", - "outcome_indeterminate", - "transport_unavailable", - "unsupported_transport_capability" - ] - }, - "message": { "type": "string", "minLength": 1 }, - "details": true, - "retryable": { "type": "boolean" } - }, - "additionalProperties": false - }, - "actionOutcome": { - "title": "mdbase action outcome", - "type": "object", - "required": [ - "kind", - "profile_version", - "outcome_id", - "request_id", - "invocation_id", - "attempt_id", - "contract", - "provider", - "provider_declaration_digest", - "status", - "completed_at" - ], - "properties": { - "kind": { "const": "mdbase.action.outcome" }, - "profile_version": { "const": "0.1" }, - "outcome_id": { "$ref": "#/$defs/portableId" }, - "request_id": { "$ref": "#/$defs/portableId" }, - "invocation_id": { "$ref": "#/$defs/portableId" }, - "attempt_id": { "$ref": "#/$defs/portableId" }, - "contract": { "$ref": "#/$defs/exactContract" }, - "provider": { "$ref": "#/$defs/implementationIdentity" }, - "provider_declaration_digest": { "$ref": "#/$defs/digest" }, - "status": { - "enum": ["succeeded", "rejected", "failed", "cancelled", "outcome_indeterminate"] - }, - "completed_at": { "type": "string", "format": "date-time" }, - "output": true, - "error": { "$ref": "#/$defs/portableError" } - }, - "allOf": [ - { - "if": { - "properties": { "status": { "const": "succeeded" } }, - "required": ["status"] - }, - "then": { - "required": ["output"], - "not": { "required": ["error"] } - }, - "else": { - "required": ["error"], - "not": { "required": ["output"] } - } - } - ], - "additionalProperties": false - }, - "actionCancellation": { - "title": "mdbase action cancellation request", - "type": "object", - "required": ["kind", "profile_version", "cancellation_id", "request_id", "caller", "requested_at"], - "properties": { - "kind": { "const": "mdbase.action.cancel" }, - "profile_version": { "const": "0.1" }, - "cancellation_id": { "$ref": "#/$defs/portableId" }, - "request_id": { "$ref": "#/$defs/portableId" }, - "caller": { "$ref": "#/$defs/implementationIdentity" }, - "requested_at": { "type": "string", "format": "date-time" }, - "reason": { "type": "string", "maxLength": 1024 } - }, - "additionalProperties": false - }, - "eventSourceDeclaration": { - "title": "mdbase event-source declaration", - "type": "object", - "required": [ - "kind", - "profile_version", - "declaration_id", - "declaration_digest", - "source", - "contracts" - ], - "properties": { - "kind": { "const": "mdbase.event-source" }, - "profile_version": { "const": "0.1" }, - "declaration_id": { "$ref": "#/$defs/portableId" }, - "declaration_digest": { "$ref": "#/$defs/digest" }, - "source": { "$ref": "#/$defs/implementationIdentity" }, - "contracts": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": ["requirement", "resolved"], - "properties": { - "requirement": { "$ref": "#/$defs/contractRequirement" }, - "resolved": { "$ref": "#/$defs/exactContract" }, - "binding": true, - "ordering": { - "type": "array", - "uniqueItems": true, - "items": { "enum": ["none", "source", "subject"] } - } - }, - "additionalProperties": false - } - } - }, - "additionalProperties": false - }, - "actionProviderDeclaration": { - "title": "mdbase action-provider declaration", - "type": "object", - "required": [ - "kind", - "profile_version", - "declaration_id", - "declaration_digest", - "provider", - "handlers" - ], - "properties": { - "kind": { "const": "mdbase.action-provider" }, - "profile_version": { "const": "0.1" }, - "declaration_id": { "$ref": "#/$defs/portableId" }, - "declaration_digest": { "$ref": "#/$defs/digest" }, - "provider": { "$ref": "#/$defs/implementationIdentity" }, - "handlers": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": ["handler_id", "requirement", "resolved"], - "properties": { - "handler_id": { "$ref": "#/$defs/portableId" }, - "requirement": { "$ref": "#/$defs/contractRequirement" }, - "resolved": { "$ref": "#/$defs/exactContract" }, - "binding": true, - "idempotency": { - "type": "object", - "required": ["mode"], - "properties": { - "mode": { "enum": ["none", "request"] }, - "retention_seconds": { "type": "integer", "minimum": 1 } - }, - "additionalProperties": false - }, - "cancellation": { "enum": ["none", "cooperative"] }, - "max_concurrency": { "type": "integer", "minimum": 1 } - }, - "additionalProperties": false - } - } - }, - "additionalProperties": false - }, - "conformanceClaim": { - "title": "mdbase interoperability conformance claim", - "type": "object", - "required": ["kind", "profile_version", "implementation", "roles", "transport"], - "properties": { - "kind": { "const": "mdbase.interop.conformance" }, - "profile_version": { "const": "0.1" }, - "implementation": { "$ref": "#/$defs/implementationIdentity" }, - "roles": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "enum": ["event_source", "event_consumer", "action_caller", "action_provider", "bridge"] - } - }, - "transport": { "$ref": "#/$defs/transportCapabilities" }, - "evidence": { - "type": "array", - "items": { - "type": "object", - "required": ["scenario", "result"], - "properties": { - "scenario": { "type": "string", "minLength": 1 }, - "result": { "const": "pass" }, - "uri": { "type": "string", "format": "uri-reference" } - }, - "additionalProperties": false - } - } - }, - "additionalProperties": false - } - } -} diff --git a/public/mdbase-introduction.css b/public/mdbase-introduction.css deleted file mode 100644 index d26c0c9..0000000 --- a/public/mdbase-introduction.css +++ /dev/null @@ -1,471 +0,0 @@ -:root { - color-scheme: light; - --paper: oklch(99.5% 0.002 255); - --paper-soft: oklch(97.8% 0.003 255); - --ink: oklch(21% 0.018 255); - --ink-soft: oklch(39% 0.014 255); - --muted: oklch(54% 0.014 255); - --line: oklch(90% 0.006 255); - --line-strong: oklch(78% 0.008 255); - --accent: oklch(45% 0.105 238); - --accent-soft: oklch(95% 0.025 238); - --ease: cubic-bezier(0.22, 1, 0.36, 1); - } - - * { - box-sizing: border-box; - } - - html { - scroll-behavior: smooth; - background: var(--paper); - } - - body { - min-width: 320px; - margin: 0; - overflow-x: hidden; - color: var(--ink); - background: var(--paper); - font-family: "Atkinson Hyperlegible", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; - -webkit-font-smoothing: antialiased; - } - - body::before { - position: fixed; - z-index: 0; - inset: 0; - content: ""; - pointer-events: none; - background: linear-gradient( - 90deg, - var(--paper) 0%, - var(--paper) 36%, - oklch(99.5% 0.002 255 / 92%) 45%, - transparent 64% - ); - } - - a { - color: inherit; - } - - button, - a { - -webkit-tap-highlight-color: transparent; - } - - a:focus-visible, - button:focus-visible { - outline: 2px solid var(--accent); - outline-offset: 4px; - } - - .site-header { - position: fixed; - z-index: 5; - top: 0; - right: 0; - left: 0; - display: flex; - align-items: center; - justify-content: space-between; - min-height: 64px; - padding: 0 clamp(20px, 4.5vw, 68px); - gap: 28px; - background: oklch(99.5% 0.002 255 / 94%); - border-bottom: 1px solid var(--line); - } - - .wordmark { - display: inline-flex; - align-items: center; - gap: 9px; - font: 650 14px/1 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; - letter-spacing: -0.035em; - text-decoration: none; - } - - .wordmark__dot { - width: 7px; - height: 7px; - background: var(--accent); - border-radius: 50%; - } - - .site-nav { - display: flex; - align-items: center; - gap: clamp(15px, 2.4vw, 32px); - } - - .site-nav a { - color: var(--ink-soft); - font-size: 12px; - font-weight: 560; - text-decoration: none; - } - - .site-nav a:hover { - color: var(--ink); - text-decoration: underline; - text-decoration-thickness: 1px; - text-underline-offset: 5px; - } - - .scroll-progress { - position: fixed; - z-index: 6; - top: 63px; - right: 0; - left: 0; - height: 1px; - pointer-events: none; - } - - .scroll-progress::after { - display: block; - width: calc(var(--scroll-progress, 0) * 100%); - height: 100%; - content: ""; - background: var(--accent); - transform-origin: left; - } - - #diagram { - position: fixed; - z-index: 0; - inset: 0; - display: block; - width: 100%; - height: 100%; - pointer-events: none; - } - - main { - position: relative; - z-index: 1; - } - - .chapter { - display: flex; - align-items: center; - min-height: 112vh; - padding: 15vh clamp(22px, 6.8vw, 104px); - scroll-margin-top: 64px; - } - - .chapter:first-child { - min-height: 126vh; - } - - .chapter:last-child { - min-height: 122vh; - } - - .chapter__inner { - width: min(540px, 42vw); - opacity: 0.25; - transform: translateY(22px); - transition: - opacity 500ms var(--ease), - transform 700ms var(--ease); - } - - .chapter.is-active .chapter__inner { - opacity: 1; - transform: translateY(0); - } - - h1, - h2 { - max-width: 11ch; - margin: 0; - font-weight: 720; - line-height: 0.94; - letter-spacing: -0.058em; - text-wrap: balance; - } - - h1 { - max-width: 13ch; - font-size: clamp(52px, 6vw, 84px); - } - - h2 { - font-size: clamp(45px, 5.4vw, 78px); - } - - .chapter__lead { - max-width: 55ch; - margin: clamp(25px, 4vh, 42px) 0 0; - color: var(--ink-soft); - font-size: clamp(16px, 1.3vw, 19px); - line-height: 1.58; - } - - .chapter__body { - max-width: 62ch; - margin: 18px 0 0; - color: var(--muted); - font-size: 13px; - line-height: 1.65; - } - - .facts { - max-width: 470px; - padding: 0; - margin: 30px 0 0; - list-style: none; - border-top: 1px solid var(--line); - } - - .facts li { - display: grid; - grid-template-columns: minmax(96px, 0.72fr) 1.5fr; - align-items: baseline; - gap: 20px; - padding: 11px 0; - border-bottom: 1px solid var(--line); - } - - .facts span { - color: var(--muted); - font: 540 10px/1.3 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; - } - - .facts strong { - font-size: 12px; - font-weight: 590; - line-height: 1.4; - } - - .file-tree, - .record-example { - width: min(470px, 100%); - padding: 17px 18px; - margin: 28px 0 0; - overflow-x: auto; - color: var(--ink-soft); - background: var(--paper-soft); - border: 1px solid var(--line); - border-radius: 4px; - font: 520 11px/1.55 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; - tab-size: 2; - } - - .file-tree span, - .record-example span { - color: var(--accent); - } - - .file-tree strong { - color: var(--ink); - font-weight: 680; - } - - .steps { - max-width: 470px; - padding: 0; - margin: 26px 0 0; - list-style: none; - } - - .steps li { - display: grid; - grid-template-columns: 24px 1fr; - align-items: baseline; - gap: 13px; - padding: 7px 0; - } - - .steps span { - display: inline-flex; - align-items: center; - justify-content: center; - width: 20px; - height: 20px; - color: var(--accent); - border: 1px solid oklch(76% 0.055 238); - border-radius: 50%; - font: 650 9px/1 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; - } - - .steps strong { - font-size: 12px; - font-weight: 590; - line-height: 1.45; - } - - .chapter__actions { - display: flex; - align-items: center; - gap: 18px; - margin-top: 30px; - } - - .button { - display: inline-flex; - align-items: center; - justify-content: center; - min-height: 38px; - padding: 0 14px; - color: var(--accent); - font-size: 12px; - font-weight: 650; - text-decoration: none; - background: var(--accent-soft); - border: 1px solid oklch(76% 0.055 238); - border-radius: 4px; - transition: - background-color 180ms var(--ease), - border-color 180ms var(--ease); - } - - .button:hover { - background: oklch(92.5% 0.035 238); - border-color: var(--accent); - } - - .text-link { - color: var(--ink); - font-size: 12px; - font-weight: 600; - text-decoration-thickness: 1px; - text-underline-offset: 5px; - } - - .scroll-cue { - position: absolute; - bottom: 10vh; - left: clamp(22px, 6.8vw, 104px); - display: inline-flex; - align-items: center; - gap: 10px; - color: var(--muted); - font: 520 10px/1 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; - } - - .scroll-cue::before { - width: 1px; - height: 34px; - content: ""; - background: var(--line-strong); - } - - .site-footer { - position: relative; - z-index: 2; - display: flex; - align-items: center; - justify-content: space-between; - min-height: 68px; - padding: 0 clamp(22px, 4.5vw, 68px); - color: var(--muted); - font: 520 10px/1.2 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; - background: var(--paper); - border-top: 1px solid var(--line); - } - - @media (max-width: 820px) { - body::before { - background: linear-gradient( - 180deg, - transparent 0%, - transparent 40vh, - oklch(99.5% 0.002 255 / 88%) 50vh, - var(--paper) 65vh - ); - } - - .site-header { - min-height: 56px; - } - - .scroll-progress { - top: 55px; - } - - .site-nav a:not(:last-child) { - display: none; - } - - .chapter { - align-items: flex-start; - min-height: 142vh; - padding-top: 58vh; - padding-bottom: 16vh; - } - - .chapter:first-child, - .chapter:last-child { - min-height: 148vh; - } - - .chapter__inner { - width: 100%; - } - - h1 { - font-size: clamp(54px, 15.5vw, 82px); - } - - h2 { - font-size: clamp(44px, 12.5vw, 68px); - } - - .chapter__lead { - max-width: 42ch; - font-size: 16px; - } - - .scroll-cue { - bottom: 9vh; - } - } - - @media (max-width: 480px) { - .site-nav { - gap: 12px; - } - - .site-nav a { - font-size: 11px; - } - - .chapter { - padding-right: 22px; - padding-left: 22px; - } - - .scroll-cue { - left: 22px; - } - - .facts li { - grid-template-columns: 86px 1fr; - gap: 14px; - } - - .file-tree, - .record-example { - padding-right: 14px; - padding-left: 14px; - font-size: 10px; - } - - .site-footer span:last-child { - display: none; - } - } - - @media (prefers-reduced-motion: reduce) { - html { - scroll-behavior: auto; - } - - .chapter__inner { - transform: none; - transition: none; - } - } diff --git a/public/mdbase-shell.css b/public/mdbase-shell.css deleted file mode 100644 index 4b34065..0000000 --- a/public/mdbase-shell.css +++ /dev/null @@ -1,232 +0,0 @@ -:root { - --sans: "Atkinson Hyperlegible", "Segoe UI", sans-serif; - --mono: "Azeret Mono", "SFMono-Regular", "Cascadia Code", monospace; - --site-left: clamp(24px, 8vw, 120px); - --shell-width: 760px; -} - -*, -*::before, -*::after { - box-sizing: border-box; -} - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border: 0; -} - -html { - font-size: 17px; -} - -body { - margin: 0; - font-family: var(--sans); - font-size: 1rem; - line-height: 1.5; -} - -.site-body--wide { - --shell-width: 1080px; -} - -.site-header { - position: relative; - z-index: 20; - width: min(calc(100% - 48px), var(--shell-width)); - margin-left: var(--site-left); - padding-top: 22px; - color: var(--color-text); - background: var(--color-canvas); -} - -.home-body > .site-header { - position: fixed; - top: 0; - left: var(--site-left); - margin-left: 0; - background: color-mix(in srgb, var(--color-canvas) 92%, transparent); -} - -.site-header__inner { - width: 100%; -} - -.site-header__identity { - display: flex; - align-items: baseline; - justify-content: space-between; - gap: 1rem; -} - -.site-header__signup { - color: var(--color-text); - white-space: nowrap; - text-underline-offset: 0.2em; -} - -.site-header__signup:hover { - color: var(--color-text-soft); -} - -.site-header__signup:focus-visible { - outline: 2px solid currentColor; - outline-offset: 3px; -} - -.wordmark { - display: inline-block; - margin-bottom: 18px; - color: var(--color-text); - font-weight: 400; - text-decoration: none; -} - -.site-nav { - display: flex; - padding: 10px 0; - align-items: center; - flex-wrap: wrap; - gap: 6px 22px; - border-top: 1px solid var(--color-text); - border-bottom: 1px solid var(--color-text); -} - -.site-nav a, -.theme-toggle { - padding: 0; - color: var(--color-text); - background: transparent; - border: 0; - font: inherit; - text-underline-offset: 0.2em; -} - -.site-nav a[aria-current="page"] { - font-weight: 400; - text-decoration: none; -} - -.theme-toggle { - width: 24px; - height: 24px; - margin-left: auto; - display: grid; - place-items: center; - cursor: pointer; -} - -.theme-toggle[hidden] { - display: none; -} - -.theme-toggle__icon { - width: 14px; - height: 14px; -} - -.theme-toggle__icon circle { - fill: none; - stroke: currentColor; - stroke-width: 1.25; -} - -.theme-toggle__icon path { - fill: currentColor; -} - -.site-footer { - position: relative; - z-index: 3; - width: min(calc(100% - 48px), var(--shell-width)); - margin: 40px 0 0 var(--site-left); - padding: 12px 0 48px; - color: var(--color-text); - background: var(--color-canvas); - border-top: 1px solid var(--color-text); -} - -.site-footer__inner { - display: grid; - align-items: start; - grid-template-columns: minmax(9rem, 0.6fr) minmax(0, 1.4fr); - gap: 2rem; -} - -.site-footer strong { - font-weight: 400; -} - -.site-footer p { - margin: 0; - color: var(--color-text-soft); -} - -.site-footer__nav { - display: grid; - grid-template-columns: repeat(3, minmax(0, 1fr)); - gap: 1.5rem; -} - -.site-footer__nav > div { - display: grid; - align-content: start; - gap: 0.2rem; -} - -.site-footer__nav > div > strong { - margin-bottom: 0.25rem; -} - -.site-footer a { - color: var(--color-text); - text-decoration: none; -} - -.site-footer a:hover { - color: var(--color-text-soft); -} - -@media (max-width: 820px) { - :root { - --site-left: 16px; - } - - .site-header, - .home-body > .site-header, - .site-footer { - width: calc(100% - 32px); - } - - .site-header { - padding-top: 16px; - } - - .site-nav { - gap: 6px 14px; - } -} - -@media (max-width: 42rem) { - .site-footer__inner { - grid-template-columns: 1fr; - } -} - -@media (max-width: 35rem) { - .site-footer__identity p { - display: none; - } - - .site-footer__nav { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } -} diff --git a/public/mdbase-theme.css b/public/mdbase-theme.css deleted file mode 100644 index 0bed40c..0000000 --- a/public/mdbase-theme.css +++ /dev/null @@ -1,165 +0,0 @@ -/* - * mdbase semantic roles. Components consume roles rather than palette values so - * both themes keep the same hierarchy. Short aliases (`--ink`, `--muted`, ...) are - * app-local and must map onto these roles. - */ -:root { - color-scheme: light; - --color-canvas: oklch(99.5% 0.002 255); - --color-surface: oklch(99.5% 0.002 255); - --color-surface-subtle: oklch(97.8% 0.003 255); - --color-text: oklch(21% 0.018 255); - --color-text-soft: oklch(50% 0.014 255); - --color-text-muted: oklch(54% 0.01 255); - --color-text-faint: oklch(70% 0.009 255); - --color-border: oklch(92% 0.006 255); - --color-border-strong: oklch(82% 0.008 255); - --color-selected: oklch(96.8% 0.004 255); - --color-accent: oklch(47% 0.1 238); - --color-accent-strong: oklch(41% 0.1 238); - --color-accent-soft: oklch(93.5% 0.035 238); - --color-on-accent: oklch(98% 0.004 245); - --color-success: oklch(44% 0.085 153); - --color-danger: oklch(50% 0.11 28); - --color-danger-soft: oklch(97% 0.018 28); - --color-warning: oklch(60% 0.09 75); - --color-warning-border: oklch(83% 0.055 82); - --color-warning-surface: oklch(98% 0.018 86); - --color-warning-text: oklch(43% 0.055 69); - --color-warning-strong: oklch(36% 0.052 67); - --color-editor-text: oklch(28% 0.014 255); - --color-placeholder: oklch(78% 0.007 255); - --color-skeleton: var(--color-border); - --color-shadow: oklch(20% 0.02 255 / 0.06); - --color-scrim: oklch(21% 0.018 255 / 0.14); - --scrollbar-thumb-rest: oklch(51% 0.014 255 / 0.07); - --scrollbar-thumb: oklch(51% 0.014 255 / 0.22); - --scrollbar-thumb-hover: oklch(42% 0.016 255 / 0.4); - --syntax-comment: oklch(58% 0.012 255); - --syntax-keyword: oklch(42% 0.09 294); - --syntax-string: oklch(39% 0.075 153); - --syntax-number: oklch(43% 0.1 45); - --syntax-link: oklch(43% 0.1 238); - --syntax-heading: var(--color-text); - --app-editor: #005c88; - --app-reader: #a4467f; - --app-writer: #d55e00; - --sans: "Atkinson Hyperlegible", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; - --mono: "Azeret Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; - /* Motion: popovers and small entrances are quick and ease out; a settled - confirmation holds, then fades away (see controls.css). */ - --ease-out: cubic-bezier(0.22, 1, 0.36, 1); - --motion-quick: 150ms; - --motion-base: 180ms; - --motion-settle: 2.4s; -} - -:root[data-theme="dark"] { - color-scheme: dark; - --color-canvas: oklch(17.5% 0.012 255); - --color-surface: oklch(19.5% 0.012 255); - --color-surface-subtle: oklch(22.5% 0.012 255); - --color-text: oklch(92% 0.008 255); - --color-text-soft: oklch(70% 0.012 255); - --color-text-muted: oklch(62% 0.011 255); - --color-text-faint: oklch(56% 0.011 255); - --color-border: oklch(29% 0.012 255); - --color-border-strong: oklch(39% 0.012 255); - --color-selected: oklch(23.5% 0.012 255); - --color-accent: oklch(73% 0.105 238); - --color-accent-strong: oklch(65% 0.105 238); - --color-accent-soft: oklch(31% 0.045 238); - --color-on-accent: oklch(17% 0.012 255); - --color-success: oklch(72% 0.09 153); - --color-danger: oklch(72% 0.115 28); - --color-danger-soft: oklch(25% 0.03 28); - --color-warning: oklch(78% 0.09 75); - --color-warning-border: oklch(48% 0.06 82); - --color-warning-surface: oklch(25% 0.026 82); - --color-warning-text: oklch(78% 0.07 82); - --color-warning-strong: oklch(86% 0.065 82); - --color-editor-text: oklch(88% 0.009 255); - --color-placeholder: oklch(56% 0.01 255); - --color-skeleton: oklch(25% 0.012 255); - --color-shadow: oklch(5% 0.01 255 / 0.22); - --color-scrim: oklch(5% 0.01 255 / 0.46); - --scrollbar-thumb-rest: oklch(72% 0.012 255 / 0.06); - --scrollbar-thumb: oklch(72% 0.012 255 / 0.2); - --scrollbar-thumb-hover: oklch(78% 0.012 255 / 0.38); - --syntax-comment: oklch(62% 0.012 255); - --syntax-keyword: oklch(76% 0.09 294); - --syntax-string: oklch(75% 0.08 153); - --syntax-number: oklch(78% 0.1 65); - --syntax-link: oklch(77% 0.1 238); - --app-editor: #63b1e2; - --app-reader: #e08cc0; - --app-writer: #f58d4a; -} - -@media (prefers-color-scheme: dark) { - :root:not([data-theme]) { - color-scheme: dark; - --color-canvas: oklch(17.5% 0.012 255); - --color-surface: oklch(19.5% 0.012 255); - --color-surface-subtle: oklch(22.5% 0.012 255); - --color-text: oklch(92% 0.008 255); - --color-text-soft: oklch(70% 0.012 255); - --color-text-muted: oklch(62% 0.011 255); - --color-text-faint: oklch(56% 0.011 255); - --color-border: oklch(29% 0.012 255); - --color-border-strong: oklch(39% 0.012 255); - --color-selected: oklch(23.5% 0.012 255); - --color-accent: oklch(73% 0.105 238); - --color-accent-strong: oklch(65% 0.105 238); - --color-accent-soft: oklch(31% 0.045 238); - --color-on-accent: oklch(17% 0.012 255); - --color-success: oklch(72% 0.09 153); - --color-danger: oklch(72% 0.115 28); - --color-danger-soft: oklch(25% 0.03 28); - --color-warning: oklch(78% 0.09 75); - --color-warning-border: oklch(48% 0.06 82); - --color-warning-surface: oklch(25% 0.026 82); - --color-warning-text: oklch(78% 0.07 82); - --color-warning-strong: oklch(86% 0.065 82); - --color-editor-text: oklch(88% 0.009 255); - --color-placeholder: oklch(56% 0.01 255); - --color-skeleton: oklch(25% 0.012 255); - --color-shadow: oklch(5% 0.01 255 / 0.22); - --color-scrim: oklch(5% 0.01 255 / 0.46); - --scrollbar-thumb-rest: oklch(72% 0.012 255 / 0.06); - --scrollbar-thumb: oklch(72% 0.012 255 / 0.2); - --scrollbar-thumb-hover: oklch(78% 0.012 255 / 0.38); - --syntax-comment: oklch(62% 0.012 255); - --syntax-keyword: oklch(76% 0.09 294); - --syntax-string: oklch(75% 0.08 153); - --syntax-number: oklch(78% 0.1 65); - --syntax-link: oklch(77% 0.1 238); - --app-editor: #63b1e2; - --app-reader: #e08cc0; - --app-writer: #f58d4a; - } -} - - -:root { - color: var(--ink); - background: var(--paper); - font-family: var(--sans); - font-synthesis: none; - --paper: var(--color-surface); - --hover: var(--color-surface-subtle); - --selected: var(--color-selected); - --ink: var(--color-text); - --ink-soft: var(--color-text-soft); - --muted: var(--color-text-muted); - --faint: var(--color-text-faint); - --line: var(--color-border); - --line-strong: var(--color-border-strong); - --accent: var(--color-accent); - --action: var(--color-accent-strong); - --control-on: var(--color-border-strong); - --connected: var(--color-success); - --warning: var(--color-warning); - --danger: var(--color-danger); - --ease: cubic-bezier(0.16, 1, 0.3, 1); -} diff --git a/public/runtime/schemas/v0.2/mdbase.record.created/1.0.0.schema.json b/public/runtime/schemas/v0.2/mdbase.record.created/1.0.0.schema.json deleted file mode 100644 index f2f1c4e..0000000 --- a/public/runtime/schemas/v0.2/mdbase.record.created/1.0.0.schema.json +++ /dev/null @@ -1,180 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase record-created event data", - "type": "object", - "required": [ - "path", - "after", - "changed_fields", - "revision", - "types" - ], - "properties": { - "path": { - "type": "string", - "minLength": 1 - }, - "after": { - "type": "object" - }, - "changed_fields": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "revision": { - "type": "string", - "minLength": 1 - }, - "types": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.record.created/1.0.0.schema.json" -} diff --git a/public/runtime/schemas/v0.2/mdbase.record.deleted/1.0.0.schema.json b/public/runtime/schemas/v0.2/mdbase.record.deleted/1.0.0.schema.json deleted file mode 100644 index 49a395f..0000000 --- a/public/runtime/schemas/v0.2/mdbase.record.deleted/1.0.0.schema.json +++ /dev/null @@ -1,172 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase record-deleted event data", - "type": "object", - "required": [ - "path", - "before", - "previous_revision", - "types" - ], - "properties": { - "path": { - "type": "string", - "minLength": 1 - }, - "before": { - "type": "object" - }, - "previous_revision": { - "type": "string", - "minLength": 1 - }, - "types": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.record.deleted/1.0.0.schema.json" -} diff --git a/public/runtime/schemas/v0.2/mdbase.record.modified/1.0.0.schema.json b/public/runtime/schemas/v0.2/mdbase.record.modified/1.0.0.schema.json deleted file mode 100644 index 57ad051..0000000 --- a/public/runtime/schemas/v0.2/mdbase.record.modified/1.0.0.schema.json +++ /dev/null @@ -1,198 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase record-modified event data", - "type": "object", - "required": [ - "path", - "before", - "after", - "changed_fields", - "previous_revision", - "revision", - "previous_types", - "types" - ], - "properties": { - "path": { - "type": "string", - "minLength": 1 - }, - "before": { - "type": "object" - }, - "after": { - "type": "object" - }, - "changed_fields": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "previous_revision": { - "type": "string", - "minLength": 1 - }, - "revision": { - "type": "string", - "minLength": 1 - }, - "previous_types": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - }, - "types": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.record.modified/1.0.0.schema.json" -} diff --git a/public/runtime/schemas/v0.2/mdbase.record.renamed/1.0.0.schema.json b/public/runtime/schemas/v0.2/mdbase.record.renamed/1.0.0.schema.json deleted file mode 100644 index 4c11fc8..0000000 --- a/public/runtime/schemas/v0.2/mdbase.record.renamed/1.0.0.schema.json +++ /dev/null @@ -1,195 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase record-renamed event data", - "type": "object", - "required": [ - "from", - "to", - "before", - "after", - "previous_revision", - "revision", - "previous_types", - "types" - ], - "properties": { - "from": { - "type": "string", - "minLength": 1 - }, - "to": { - "type": "string", - "minLength": 1 - }, - "before": { - "type": "object" - }, - "after": { - "type": "object" - }, - "previous_revision": { - "type": "string", - "minLength": 1 - }, - "revision": { - "type": "string", - "minLength": 1 - }, - "previous_types": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - }, - "types": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.record.renamed/1.0.0.schema.json" -} diff --git a/public/runtime/schemas/v0.2/mdbase.runtime.action-attempt/1.0.0.schema.json b/public/runtime/schemas/v0.2/mdbase.runtime.action-attempt/1.0.0.schema.json deleted file mode 100644 index b02f7b7..0000000 --- a/public/runtime/schemas/v0.2/mdbase.runtime.action-attempt/1.0.0.schema.json +++ /dev/null @@ -1,238 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime action attempt", - "type": "object", - "required": [ - "type", - "id", - "run_id", - "step_id", - "request_id", - "invocation_id", - "attempt_id", - "contract", - "provider", - "provider_declaration_digest", - "status", - "created_at", - "updated_at" - ], - "properties": { - "type": { - "const": "runtime_action_attempt" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "run_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "step_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "request_id": { - "type": "string", - "minLength": 1 - }, - "invocation_id": { - "type": "string", - "minLength": 1 - }, - "attempt_id": { - "type": "string", - "minLength": 1 - }, - "contract": { - "$ref": "#/$defs/exactContractReference" - }, - "provider": { - "$ref": "#/$defs/identity" - }, - "provider_declaration_digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "handler_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "idempotency_key": { - "type": "string" - }, - "status": { - "enum": [ - "admitted", - "dispatching", - "succeeded", - "rejected", - "failed", - "cancelled", - "indeterminate" - ] - }, - "request": { - "type": "object" - }, - "invocation": { - "type": "object" - }, - "outcome": { - "type": "object" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "updated_at": { - "type": "string", - "format": "date-time" - }, - "completed_at": { - "type": "string", - "format": "date-time" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.action-attempt/1.0.0.schema.json" -} diff --git a/public/runtime/schemas/v0.2/mdbase.runtime.capability-grant/1.0.0.schema.json b/public/runtime/schemas/v0.2/mdbase.runtime.capability-grant/1.0.0.schema.json deleted file mode 100644 index 9d6cc2d..0000000 --- a/public/runtime/schemas/v0.2/mdbase.runtime.capability-grant/1.0.0.schema.json +++ /dev/null @@ -1,197 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase runtime capability grant", - "type": "object", - "required": [ - "type", - "id", - "capability", - "principal", - "mode", - "granted_at" - ], - "properties": { - "type": { - "const": "runtime_capability_grant" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "capability": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "principal": { - "$ref": "#/$defs/identity" - }, - "mode": { - "enum": [ - "allow", - "deny" - ] - }, - "actions": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/$defs/contractRequirement" - } - }, - "providers": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/$defs/providerSelector" - } - }, - "granted_at": { - "type": "string", - "format": "date-time" - }, - "expires_at": { - "type": "string", - "format": "date-time" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.capability-grant/1.0.0.schema.json" -} diff --git a/public/runtime/schemas/v0.2/mdbase.runtime.checkpoint/1.0.0.schema.json b/public/runtime/schemas/v0.2/mdbase.runtime.checkpoint/1.0.0.schema.json deleted file mode 100644 index f14163b..0000000 --- a/public/runtime/schemas/v0.2/mdbase.runtime.checkpoint/1.0.0.schema.json +++ /dev/null @@ -1,188 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime checkpoint", - "type": "object", - "required": [ - "type", - "id", - "run_id", - "generation", - "status", - "state", - "updated_at" - ], - "properties": { - "type": { - "const": "runtime_checkpoint" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "run_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "generation": { - "type": "integer", - "minimum": 1 - }, - "status": { - "enum": [ - "open", - "waiting", - "ready", - "completed", - "failed", - "cancelled" - ] - }, - "state": { - "type": "object" - }, - "updated_at": { - "type": "string", - "format": "date-time" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.checkpoint/1.0.0.schema.json" -} diff --git a/public/runtime/schemas/v0.2/mdbase.runtime.dead-letter/1.0.0.schema.json b/public/runtime/schemas/v0.2/mdbase.runtime.dead-letter/1.0.0.schema.json deleted file mode 100644 index ea3be8b..0000000 --- a/public/runtime/schemas/v0.2/mdbase.runtime.dead-letter/1.0.0.schema.json +++ /dev/null @@ -1,191 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime dead letter", - "type": "object", - "required": [ - "type", - "id", - "reason", - "status", - "evidence", - "created_at" - ], - "properties": { - "type": { - "const": "runtime_dead_letter" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "reason": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "status": { - "enum": [ - "unresolved", - "acknowledged", - "requeued" - ] - }, - "evidence_kind": { - "enum": [ - "event", - "action_request", - "action_outcome" - ] - }, - "evidence": { - "type": "object" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "acknowledged_at": { - "type": "string", - "format": "date-time" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.dead-letter/1.0.0.schema.json" -} diff --git a/public/runtime/schemas/v0.2/mdbase.runtime.diagnostic/1.0.0.schema.json b/public/runtime/schemas/v0.2/mdbase.runtime.diagnostic/1.0.0.schema.json deleted file mode 100644 index 0dec633..0000000 --- a/public/runtime/schemas/v0.2/mdbase.runtime.diagnostic/1.0.0.schema.json +++ /dev/null @@ -1,193 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime diagnostic", - "type": "object", - "required": [ - "type", - "id", - "severity", - "code", - "message", - "created_at" - ], - "properties": { - "type": { - "const": "runtime_diagnostic" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "severity": { - "enum": [ - "info", - "warning", - "error" - ] - }, - "code": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "message": { - "type": "string", - "minLength": 1 - }, - "run_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "attempt_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "path": { - "type": "string" - }, - "details": {}, - "created_at": { - "type": "string", - "format": "date-time" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.diagnostic/1.0.0.schema.json" -} diff --git a/public/runtime/schemas/v0.2/mdbase.runtime.policy/1.0.0.schema.json b/public/runtime/schemas/v0.2/mdbase.runtime.policy/1.0.0.schema.json deleted file mode 100644 index a873c7b..0000000 --- a/public/runtime/schemas/v0.2/mdbase.runtime.policy/1.0.0.schema.json +++ /dev/null @@ -1,263 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime policy", - "type": "object", - "required": [ - "type", - "id", - "version", - "enabled", - "grants" - ], - "properties": { - "type": { - "const": "runtime_policy" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "name": { - "type": "string", - "minLength": 1 - }, - "enabled": { - "type": "boolean" - }, - "executors": { - "type": "object", - "required": [], - "properties": { - "default": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "workflows": { - "type": "object", - "additionalProperties": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "provider_selections": { - "type": "array", - "items": { - "type": "object", - "required": [ - "contract", - "selector" - ], - "properties": { - "contract": { - "$ref": "#/$defs/contractRequirement" - }, - "selector": { - "$ref": "#/$defs/providerSelector" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - } - }, - "grants": { - "type": "array", - "items": { - "type": "object", - "required": [ - "capability", - "mode" - ], - "properties": { - "capability": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "mode": { - "enum": [ - "allow", - "deny" - ] - }, - "actions": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/$defs/contractRequirement" - } - }, - "providers": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/$defs/providerSelector" - } - }, - "max_calls_per_run": { - "type": "integer", - "minimum": 1 - }, - "max_records_per_run": { - "type": "integer", - "minimum": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.policy/1.0.0.schema.json" -} diff --git a/public/runtime/schemas/v0.2/mdbase.runtime.provider-registration/1.0.0.schema.json b/public/runtime/schemas/v0.2/mdbase.runtime.provider-registration/1.0.0.schema.json deleted file mode 100644 index 1fb73c5..0000000 --- a/public/runtime/schemas/v0.2/mdbase.runtime.provider-registration/1.0.0.schema.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase runtime provider registration evidence", - "type": "object", - "required": [ - "type", - "id", - "declaration_kind", - "declaration", - "verified_at", - "active" - ], - "properties": { - "type": { - "const": "runtime_provider_registration" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "declaration_kind": { - "enum": [ - "event_source", - "action_provider" - ] - }, - "declaration": { - "type": "object" - }, - "verified_at": { - "type": "string", - "format": "date-time" - }, - "active": { - "type": "boolean" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.provider-registration/1.0.0.schema.json" -} diff --git a/public/runtime/schemas/v0.2/mdbase.runtime.run.cancel/1.0.0.output.schema.json b/public/runtime/schemas/v0.2/mdbase.runtime.run.cancel/1.0.0.output.schema.json deleted file mode 100644 index 8c3ed04..0000000 --- a/public/runtime/schemas/v0.2/mdbase.runtime.run.cancel/1.0.0.output.schema.json +++ /dev/null @@ -1,161 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase runtime run-cancel action output", - "type": "object", - "required": [ - "run_id", - "status" - ], - "properties": { - "run_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "status": { - "enum": [ - "cancellation_requested", - "already_terminal" - ] - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.run.cancel/1.0.0.output.schema.json" -} diff --git a/public/runtime/schemas/v0.2/mdbase.runtime.run.cancel/1.0.0.schema.json b/public/runtime/schemas/v0.2/mdbase.runtime.run.cancel/1.0.0.schema.json deleted file mode 100644 index e5fd257..0000000 --- a/public/runtime/schemas/v0.2/mdbase.runtime.run.cancel/1.0.0.schema.json +++ /dev/null @@ -1,157 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase runtime run-cancel action input", - "type": "object", - "required": [ - "run_id" - ], - "properties": { - "run_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "reason": { - "type": "string" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.run.cancel/1.0.0.schema.json" -} diff --git a/public/runtime/schemas/v0.2/mdbase.runtime.run/1.0.0.schema.json b/public/runtime/schemas/v0.2/mdbase.runtime.run/1.0.0.schema.json deleted file mode 100644 index 3966490..0000000 --- a/public/runtime/schemas/v0.2/mdbase.runtime.run/1.0.0.schema.json +++ /dev/null @@ -1,356 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime run", - "type": "object", - "required": [ - "type", - "id", - "workflow_id", - "workflow_version", - "workflow_revision", - "event_id", - "event_contract", - "admitted_plan", - "status", - "created_at", - "updated_at" - ], - "properties": { - "type": { - "const": "runtime_run" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "workflow_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "workflow_version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "workflow_revision": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "event_id": { - "type": "string", - "minLength": 1 - }, - "event_contract": { - "$ref": "#/$defs/exactContractReference" - }, - "event_source": { - "$ref": "#/$defs/identity" - }, - "admitted_plan": { - "$ref": "#/$defs/admittedPlan" - }, - "policy_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "policy_revision": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "trigger_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "event_cursor": { - "type": "integer", - "minimum": 1 - }, - "executor": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "idempotency_key": { - "type": "string" - }, - "concurrency_group": { - "type": "string" - }, - "status": { - "enum": [ - "queued", - "running", - "waiting", - "succeeded", - "failed", - "cancelled", - "indeterminate" - ] - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "updated_at": { - "type": "string", - "format": "date-time" - }, - "started_at": { - "type": "string", - "format": "date-time" - }, - "finished_at": { - "type": "string", - "format": "date-time" - }, - "lease": { - "$ref": "#/$defs/lease" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - }, - "admittedPlan": { - "type": "object", - "required": [ - "profile_version", - "workflow_revision", - "event", - "steps" - ], - "properties": { - "profile_version": { - "const": "0.2" - }, - "workflow_revision": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "event": { - "type": "object", - "required": [ - "contract", - "source" - ], - "properties": { - "contract": { - "$ref": "#/$defs/exactContractReference" - }, - "source": { - "$ref": "#/$defs/identity" - }, - "source_declaration_digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "steps": { - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "contract", - "provider", - "provider_declaration_digest", - "handler_id" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "contract": { - "$ref": "#/$defs/exactContractReference" - }, - "provider": { - "$ref": "#/$defs/identity" - }, - "provider_declaration_digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "handler_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "lease": { - "type": "object", - "required": [ - "owner", - "token", - "expires_at" - ], - "properties": { - "owner": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "token": { - "type": "string", - "minLength": 1 - }, - "expires_at": { - "type": "string", - "format": "date-time" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.run/1.0.0.schema.json" -} diff --git a/public/runtime/schemas/v0.2/mdbase.runtime.timer.fired/1.0.0.schema.json b/public/runtime/schemas/v0.2/mdbase.runtime.timer.fired/1.0.0.schema.json deleted file mode 100644 index 26296a9..0000000 --- a/public/runtime/schemas/v0.2/mdbase.runtime.timer.fired/1.0.0.schema.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase runtime timer-fired event data", - "type": "object", - "required": [ - "timer_id", - "generation", - "scheduled_for", - "fired_at", - "late_by_ms", - "data" - ], - "properties": { - "timer_id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "generation": { - "type": "integer", - "minimum": 1 - }, - "scheduled_for": { - "type": "string", - "format": "date-time" - }, - "fired_at": { - "type": "string", - "format": "date-time" - }, - "late_by_ms": { - "type": "integer", - "minimum": 0 - }, - "data": { - "description": "Opaque application data supplied when the timer was scheduled." - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.timer.fired/1.0.0.schema.json" -} diff --git a/public/runtime/schemas/v0.2/mdbase.runtime.timer/1.0.0.schema.json b/public/runtime/schemas/v0.2/mdbase.runtime.timer/1.0.0.schema.json deleted file mode 100644 index a03fc67..0000000 --- a/public/runtime/schemas/v0.2/mdbase.runtime.timer/1.0.0.schema.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime timer", - "type": "object", - "required": [ - "type", - "id", - "generation", - "status", - "fire_at", - "event", - "created_at", - "updated_at" - ], - "properties": { - "type": { - "const": "runtime_timer" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "generation": { - "type": "integer", - "minimum": 1 - }, - "status": { - "enum": [ - "scheduled", - "firing", - "fired", - "cancelled" - ] - }, - "fire_at": { - "type": "string", - "format": "date-time" - }, - "event": { - "type": "object", - "required": [ - "contract", - "data" - ], - "properties": { - "contract": { - "$ref": "#/$defs/contractRequirement" - }, - "subject": { - "type": "string" - }, - "correlation_id": { - "type": "string" - }, - "causation_id": { - "type": "string" - }, - "data": {} - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "missed_run_policy": { - "const": "fire_once" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "updated_at": { - "type": "string", - "format": "date-time" - }, - "fired_at": { - "type": "string", - "format": "date-time" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.timer/1.0.0.schema.json" -} diff --git a/public/runtime/schemas/v0.2/mdbase.runtime.workflow/1.0.0.schema.json b/public/runtime/schemas/v0.2/mdbase.runtime.workflow/1.0.0.schema.json deleted file mode 100644 index 60cf082..0000000 --- a/public/runtime/schemas/v0.2/mdbase.runtime.workflow/1.0.0.schema.json +++ /dev/null @@ -1,392 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "mdbase durable runtime workflow", - "type": "object", - "required": [ - "type", - "id", - "version", - "name", - "enabled", - "triggers", - "steps" - ], - "properties": { - "type": { - "const": "runtime_workflow" - }, - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "name": { - "type": "string", - "minLength": 1 - }, - "description": { - "type": "string" - }, - "enabled": { - "type": "boolean" - }, - "requires": { - "$ref": "#/$defs/requires" - }, - "vars": { - "type": "object", - "additionalProperties": {} - }, - "triggers": { - "type": "array", - "minItems": 1, - "items": { - "$ref": "#/$defs/trigger" - } - }, - "steps": { - "type": "array", - "minItems": 1, - "items": { - "$ref": "#/$defs/step" - } - }, - "run": { - "$ref": "#/$defs/runPolicy" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "$defs": { - "identifier": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "semanticVersion": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - }, - "dateTime": { - "type": "string", - "format": "date-time" - }, - "contractRequirement": { - "type": "object", - "required": [ - "id", - "version" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "minLength": 1 - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "exactContractReference": { - "type": "object", - "required": [ - "id", - "version", - "digest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "identity": { - "type": "object", - "required": [ - "application", - "implementation", - "version" - ], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "version": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "providerSelector": { - "type": "object", - "required": [], - "properties": { - "application": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "implementation": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "instance_id": { - "type": "string", - "minLength": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false, - "minProperties": 1 - }, - "expression": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - }, - "requires": { - "type": "object", - "required": [], - "properties": { - "capabilities": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - } - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "trigger": { - "type": "object", - "required": [ - "id", - "event" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "event": { - "$ref": "#/$defs/contractRequirement" - }, - "if": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - }, - "debounce": { - "$ref": "#/$defs/duration" - }, - "minimum_interval": { - "$ref": "#/$defs/duration" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "step": { - "type": "object", - "required": [ - "id", - "action" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:-]*$" - }, - "name": { - "type": "string" - }, - "action": { - "$ref": "#/$defs/contractRequirement" - }, - "provider": { - "$ref": "#/$defs/providerSelector" - }, - "requires": { - "$ref": "#/$defs/requires" - }, - "if": { - "type": "object", - "required": [ - "$expr" - ], - "properties": { - "$expr": { - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false - }, - "input": { - "type": "object", - "additionalProperties": {} - }, - "for_each": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": {}, - "as": { - "type": "string", - "pattern": "^[A-Za-z_][A-Za-z0-9_]*$" - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "duration": { - "type": "string", - "pattern": "^(0|[1-9][0-9]*)(ms|s|m|h|d)$" - }, - "runPolicy": { - "type": "object", - "required": [], - "properties": { - "idempotency": { - "type": "object", - "required": [ - "key" - ], - "properties": { - "key": {} - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "concurrency": { - "type": "object", - "required": [ - "policy" - ], - "properties": { - "group": {}, - "policy": { - "enum": [ - "skip", - "queue", - "replace", - "allow" - ] - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "limits": { - "type": "object", - "required": [], - "properties": { - "timeout": { - "$ref": "#/$defs/duration" - }, - "max_items": { - "type": "integer", - "minimum": 1 - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "on_error": { - "enum": [ - "stop", - "continue" - ] - } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - } - }, - "$id": "https://mdbase.dev/schemas/runtime/v0.2/mdbase.runtime.workflow/1.0.0.schema.json" -} diff --git a/public/testbed/schemas/v0.1/README.md b/public/testbed/schemas/v0.1/README.md deleted file mode 100644 index f10be5b..0000000 --- a/public/testbed/schemas/v0.1/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# mdbase interoperability testbed schemas - -These Draft 2020-12 schemas define portable testbed protocol `0.1`: - -- `scenario.schema.json` validates neutral, spec-owned scenario definitions. -- `fixture-catalog.schema.json` validates the shared input catalog. -- `adapter-description.schema.json` validates the capabilities reported by a - black-box adapter. -- `run-request.schema.json` validates the complete input sent to an adapter. -- `transcript.schema.json` validates deterministic observable results. -- `evidence.schema.json` validates the digest-bound run summary suitable for a - conformance claim. - -The process protocol and conformance rules are defined in -[`testbed/v0.1/README.md`](../../../testbed/v0.1/README.md). diff --git a/public/testbed/schemas/v0.1/adapter-description.schema.json b/public/testbed/schemas/v0.1/adapter-description.schema.json deleted file mode 100644 index 1ff1ee2..0000000 --- a/public/testbed/schemas/v0.1/adapter-description.schema.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/testbed/v0.1/adapter-description.schema.json", - "title": "mdbase interoperability testbed adapter description", - "type": "object", - "required": [ - "kind", - "protocol_version", - "implementation", - "profiles", - "roles", - "scenarios" - ], - "properties": { - "kind": { "const": "mdbase.testbed.adapter" }, - "protocol_version": { "const": "0.1" }, - "implementation": { - "type": "object", - "required": ["id", "name", "version"], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:/-]*$" - }, - "name": { "type": "string", "minLength": 1 }, - "version": { "type": "string", "minLength": 1 }, - "language": { "type": "string", "minLength": 1 }, - "target": { "type": "string", "minLength": 1 } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "profiles": { - "type": "array", - "uniqueItems": true, - "items": { - "enum": [ - "data_contracts", - "event_action_interop/0.1", - "runtime/0.2" - ] - } - }, - "roles": { - "type": "array", - "uniqueItems": true, - "items": { - "enum": [ - "contract_store", - "record_consumer", - "event_source", - "event_consumer", - "action_caller", - "action_provider", - "bridge", - "runtime", - "runtime_store" - ] - } - }, - "scenarios": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$" - } - } - }, - "additionalProperties": false -} diff --git a/public/testbed/schemas/v0.1/evidence.schema.json b/public/testbed/schemas/v0.1/evidence.schema.json deleted file mode 100644 index a9a291f..0000000 --- a/public/testbed/schemas/v0.1/evidence.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/testbed/v0.1/evidence.schema.json", - "title": "mdbase interoperability testbed evidence", - "type": "object", - "required": [ - "kind", - "protocol_version", - "implementation", - "result", - "scenarios" - ], - "properties": { - "kind": { "const": "mdbase.testbed.evidence" }, - "protocol_version": { "const": "0.1" }, - "implementation": { - "$ref": "adapter-description.schema.json#/properties/implementation" - }, - "result": { "enum": ["pass", "fail"] }, - "scenarios": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": ["id", "profile", "result", "transcript_digest"], - "properties": { - "id": { - "type": "string", - "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$" - }, - "profile": { - "enum": [ - "data_contracts", - "event_action_interop/0.1", - "runtime/0.2" - ] - }, - "result": { "enum": ["pass", "fail"] }, - "transcript_digest": { - "type": "string", - "pattern": "^sha256:[0-9a-f]{64}$" - } - }, - "additionalProperties": false - } - } - }, - "additionalProperties": false -} diff --git a/public/testbed/schemas/v0.1/fixture-catalog.schema.json b/public/testbed/schemas/v0.1/fixture-catalog.schema.json deleted file mode 100644 index 3ad1ea7..0000000 --- a/public/testbed/schemas/v0.1/fixture-catalog.schema.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/testbed/v0.1/fixture-catalog.schema.json", - "title": "mdbase interoperability testbed fixture catalog", - "type": "object", - "required": ["kind", "protocol_version", "fixtures"], - "properties": { - "kind": { "const": "mdbase.testbed.fixtures" }, - "protocol_version": { "const": "0.1" }, - "fixtures": { - "type": "object", - "minProperties": 1, - "propertyNames": { - "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$" - }, - "additionalProperties": { - "type": "object", - "required": ["kind", "value"], - "properties": { - "kind": { - "enum": ["contract", "type", "record", "workflow", "policy"] - }, - "value": {} - }, - "additionalProperties": false - } - } - }, - "additionalProperties": false -} diff --git a/public/testbed/schemas/v0.1/run-request.schema.json b/public/testbed/schemas/v0.1/run-request.schema.json deleted file mode 100644 index 7306f68..0000000 --- a/public/testbed/schemas/v0.1/run-request.schema.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/testbed/v0.1/run-request.schema.json", - "title": "mdbase interoperability testbed run request", - "type": "object", - "required": ["kind", "protocol_version", "scenario", "fixtures"], - "properties": { - "kind": { "const": "mdbase.testbed.run" }, - "protocol_version": { "const": "0.1" }, - "scenario": { - "$ref": "scenario.schema.json" - }, - "fixtures": { - "type": "object", - "additionalProperties": { - "type": "object", - "required": ["kind", "value"], - "properties": { - "kind": { - "enum": ["contract", "type", "record", "workflow", "policy"] - }, - "value": {} - }, - "additionalProperties": false - } - } - }, - "additionalProperties": false -} diff --git a/public/testbed/schemas/v0.1/scenario.schema.json b/public/testbed/schemas/v0.1/scenario.schema.json deleted file mode 100644 index 3435bdc..0000000 --- a/public/testbed/schemas/v0.1/scenario.schema.json +++ /dev/null @@ -1,139 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/testbed/v0.1/scenario.schema.json", - "title": "mdbase interoperability testbed scenario", - "type": "object", - "required": [ - "kind", - "protocol_version", - "id", - "name", - "ring", - "profile", - "roles", - "operation", - "fixtures", - "parameters", - "covers", - "expect" - ], - "properties": { - "kind": { "const": "mdbase.testbed.scenario" }, - "protocol_version": { "const": "0.1" }, - "id": { - "type": "string", - "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$" - }, - "name": { "type": "string", "minLength": 1 }, - "description": { "type": "string", "minLength": 1 }, - "ring": { - "enum": ["contract", "interop", "runtime"] - }, - "profile": { - "enum": [ - "data_contracts", - "event_action_interop/0.1", - "runtime/0.2" - ] - }, - "roles": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "enum": [ - "contract_store", - "record_consumer", - "event_source", - "event_consumer", - "action_caller", - "action_provider", - "bridge", - "runtime", - "runtime_store" - ] - } - }, - "operation": { - "type": "string", - "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$" - }, - "fixtures": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$" - } - }, - "parameters": { - "type": "object", - "additionalProperties": true - }, - "covers": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[A-Za-z0-9._/-]+$" - } - }, - "expect": { - "type": "object", - "required": ["entries"], - "properties": { - "entries": { - "type": "array", - "minItems": 1, - "items": { - "$ref": "#/$defs/transcriptEntry" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false, - "$defs": { - "transcriptEntry": { - "type": "object", - "required": [ - "sequence", - "phase", - "actor", - "operation", - "outcome", - "facts" - ], - "properties": { - "sequence": { "type": "integer", "minimum": 1 }, - "phase": { - "enum": ["arrange", "act", "observe", "recover"] - }, - "actor": { - "type": "string", - "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$" - }, - "operation": { - "type": "string", - "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$" - }, - "outcome": { - "enum": [ - "succeeded", - "rejected", - "failed", - "indeterminate", - "skipped" - ] - }, - "facts": { - "type": "object", - "additionalProperties": true - } - }, - "additionalProperties": false - } - } -} diff --git a/public/testbed/schemas/v0.1/transcript.schema.json b/public/testbed/schemas/v0.1/transcript.schema.json deleted file mode 100644 index 51a35e6..0000000 --- a/public/testbed/schemas/v0.1/transcript.schema.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://mdbase.dev/schemas/testbed/v0.1/transcript.schema.json", - "title": "mdbase interoperability testbed transcript", - "type": "object", - "required": [ - "kind", - "protocol_version", - "scenario_id", - "implementation", - "entries" - ], - "properties": { - "kind": { "const": "mdbase.testbed.transcript" }, - "protocol_version": { "const": "0.1" }, - "scenario_id": { - "type": "string", - "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$" - }, - "implementation": { - "type": "object", - "required": ["id", "name", "version"], - "properties": { - "id": { - "type": "string", - "pattern": "^[A-Za-z][A-Za-z0-9._:/-]*$" - }, - "name": { "type": "string", "minLength": 1 }, - "version": { "type": "string", "minLength": 1 }, - "language": { "type": "string", "minLength": 1 }, - "target": { "type": "string", "minLength": 1 } - }, - "patternProperties": { - "^x-[A-Za-z0-9._:-]+$": true - }, - "additionalProperties": false - }, - "entries": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#/$defs/entry" } - } - }, - "additionalProperties": false, - "$defs": { - "entry": { - "type": "object", - "required": [ - "sequence", - "phase", - "actor", - "operation", - "outcome", - "facts" - ], - "properties": { - "sequence": { "type": "integer", "minimum": 1 }, - "phase": { - "enum": ["arrange", "act", "observe", "recover"] - }, - "actor": { - "type": "string", - "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$" - }, - "operation": { - "type": "string", - "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$" - }, - "outcome": { - "enum": [ - "succeeded", - "rejected", - "failed", - "indeterminate", - "skipped" - ] - }, - "facts": { - "type": "object", - "additionalProperties": true - } - }, - "additionalProperties": false - } - } -} diff --git a/public/testbed/v0.1/README.md b/public/testbed/v0.1/README.md deleted file mode 100644 index 864d201..0000000 --- a/public/testbed/v0.1/README.md +++ /dev/null @@ -1,87 +0,0 @@ -# mdbase interoperability testbed 0.1 - -The testbed verifies observable behavior through a small process boundary. It -does not require implementations to share a language, runtime, database, or -plugin host, and it does not make fixture code authoritative. - -## The three rings - -1. **Contract** — load one record contract and type implementation, project one - record, and prove that multiple independent consumers receive the same - contract view. -2. **Interop** — register live sources, consumers, callers, and providers; then - verify CloudEvents multicast, exact action admission, ambiguity, unload, - validation, authorization, and replay behavior. -3. **Runtime** — exercise a durable store through crash recovery and competing - workers, including invocation reuse and lease fencing. - -Scenario JSON, not a particular implementation, defines the oracle. Every -scenario names neutral fixtures from `fixtures/catalog.json` and contains its -complete expected transcript. Volatile implementation details such as database -keys, wall-clock time, and generated IDs are reduced to stable facts before -comparison. - -## Adapter process protocol - -An adapter is an executable supporting two commands: - -```text -adapter describe -adapter run -``` - -`describe` writes one JSON document conforming to -`adapter-description.schema.json`. For `run`, the testbed writes this JSON -request to standard input: - -```json -{ - "kind": "mdbase.testbed.run", - "protocol_version": "0.1", - "scenario": {}, - "fixtures": {} -} -``` - -The adapter writes one transcript conforming to `transcript.schema.json`. -Diagnostic logging belongs on standard error; standard output contains only the -protocol document. Each `run` command is a fresh process, so scenarios cannot -pass because of hidden state left by another scenario. - -Adapters MUST exercise public or documented implementation boundaries. They -MUST NOT copy the expected transcript without observing the behavior it -describes. A transcript is evidence of a named scenario, not authority to read, -write, publish, subscribe, invoke, or provide. - -## Running - -From this repository: - -```bash -npm test --prefix packages/testbed -npm exec --prefix packages/testbed mdbase-testbed -- run --adapter reference -``` - -Against another implementation: - -```bash -mdbase-testbed run --adapter ./path/to/adapter -``` - -If the adapter is launched through a language tool, use `command:NAME` and pass -its fixed arguments separately. The runner never invokes a shell: - -```bash -mdbase-testbed run --adapter command:cargo \ - --adapter-arg run --adapter-arg --quiet \ - --adapter-arg -p --adapter-arg my-testbed-adapter --adapter-arg -- -``` - -Use `mdbase-testbed list` to inspect the portable scenario inventory and -`mdbase-testbed validate` to validate every schema, fixture, scenario, and -canonical expected transcript. - -Passing the testbed supplements the full v0.3 conformance suites. It does not by -itself establish a complete profile claim: implementations still run every -normative test for the profile they claim and attach the testbed transcript as -machine-readable evidence. diff --git a/public/testbed/v0.1/fixtures/catalog.json b/public/testbed/v0.1/fixtures/catalog.json deleted file mode 100644 index 2b7747c..0000000 --- a/public/testbed/v0.1/fixtures/catalog.json +++ /dev/null @@ -1,235 +0,0 @@ -{ - "kind": "mdbase.testbed.fixtures", - "protocol_version": "0.1", - "fixtures": { - "contract.example-note": { - "kind": "contract", - "value": { - "kind": "mdbase.contract", - "contract_type": "record", - "id": "example.note", - "version": "1.0.0", - "name": "Portable example note", - "record_schema": { - "dialect": "json-schema-2020-12", - "value": { - "type": "object", - "required": ["title"], - "additionalProperties": false, - "properties": { - "title": { "type": "string", "minLength": 1 } - } - } - } - } - }, - "contract.example-summary": { - "kind": "contract", - "value": { - "kind": "mdbase.contract", - "contract_type": "record", - "id": "example.summary", - "version": "1.0.0", - "name": "Portable example summary", - "record_schema": { - "dialect": "json-schema-2020-12", - "value": { - "type": "object", - "required": ["label"], - "additionalProperties": false, - "properties": { - "label": { "type": "string", "minLength": 1 }, - "category": { "type": "string", "minLength": 1 } - } - } - } - } - }, - "type.shared-note": { - "kind": "type", - "value": { - "kind": "mdbase.type", - "name": "shared_note", - "version": 1, - "schema": { - "dialect": "json-schema-2020-12", - "value": { - "type": "object", - "required": ["type", "headline"], - "properties": { - "type": { "const": "shared_note" }, - "headline": { "type": "string", "minLength": 1 } - } - } - }, - "implements": [ - { - "contract": "example.note", - "version": "1.0.0", - "fields": { - "title": "headline" - } - } - ] - } - }, - "type.multi-contract-note": { - "kind": "type", - "value": { - "kind": "mdbase.type", - "name": "shared_note", - "version": 1, - "schema": { - "dialect": "json-schema-2020-12", - "value": { - "type": "object", - "required": ["type", "headline", "category"], - "properties": { - "type": { "const": "shared_note" }, - "headline": { "type": "string", "minLength": 1 }, - "category": { "type": "string", "minLength": 1 } - } - } - }, - "implements": [ - { - "contract": "example.note", - "version": "1.0.0", - "fields": { - "title": "headline" - } - }, - { - "contract": "example.summary", - "version": "1.0.0", - "fields": { - "label": "headline", - "category": "category" - } - } - ] - } - }, - "record.shared-note": { - "kind": "record", - "value": { - "type": "shared_note", - "headline": "One record, two consumers", - "category": "reference" - } - }, - "contract.record-changed": { - "kind": "contract", - "value": { - "kind": "mdbase.contract", - "contract_type": "event", - "id": "example.record.changed", - "version": "1.0.0", - "name": "Example record changed", - "data_schema": { - "dialect": "json-schema-2020-12", - "value": { - "type": "object", - "required": ["record_id", "revision"], - "additionalProperties": false, - "properties": { - "record_id": { "type": "string", "minLength": 1 }, - "revision": { "type": "integer", "minimum": 1 } - } - } - } - } - }, - "contract.record-annotate": { - "kind": "contract", - "value": { - "kind": "mdbase.contract", - "contract_type": "action", - "id": "example.record.annotate", - "version": "1.0.0", - "name": "Annotate example record", - "input_schema": { - "dialect": "json-schema-2020-12", - "value": { - "type": "object", - "required": ["record_id", "label"], - "additionalProperties": false, - "properties": { - "record_id": { "type": "string", "minLength": 1 }, - "label": { "type": "string", "minLength": 1 } - } - } - }, - "output_schema": { - "dialect": "json-schema-2020-12", - "value": { - "type": "object", - "required": ["record_id", "applied"], - "additionalProperties": false, - "properties": { - "record_id": { "type": "string", "minLength": 1 }, - "applied": { "const": true } - } - } - }, - "behavior": { - "idempotency": "required", - "cancellation": "cooperative" - } - } - }, - "workflow.annotate-changed": { - "kind": "workflow", - "value": { - "type": "runtime_workflow", - "id": "example.annotate-changed", - "version": "1.0.0", - "name": "Annotate changed records", - "enabled": true, - "triggers": [ - { - "id": "changed", - "event": { - "id": "example.record.changed", - "version": "^1.0.0" - } - } - ], - "steps": [ - { - "id": "annotate", - "action": { - "id": "example.record.annotate", - "version": "^1.0.0" - }, - "requires": { - "capabilities": ["record.write"] - }, - "input": { - "record_id": { "$expr": "event.data.record_id" }, - "label": "observed" - } - } - ] - } - }, - "policy.allow-record-write": { - "kind": "policy", - "value": { - "type": "runtime_policy", - "id": "example.testbed-policy", - "version": "1.0.0", - "enabled": true, - "executors": { - "default": "testbed-runtime" - }, - "grants": [ - { - "capability": "record.write", - "mode": "allow" - } - ] - } - } - } -} diff --git a/public/testbed/v0.1/scenarios/core.shared-contract-consumers.json b/public/testbed/v0.1/scenarios/core.shared-contract-consumers.json deleted file mode 100644 index 8d635f4..0000000 --- a/public/testbed/v0.1/scenarios/core.shared-contract-consumers.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "kind": "mdbase.testbed.scenario", - "protocol_version": "0.1", - "id": "core.shared-contract-consumers", - "name": "Two applications consume one type implementation", - "description": "One type implements one record contract and two independent consumers observe the same projected contract view.", - "ring": "contract", - "profile": "data_contracts", - "roles": ["contract_store", "record_consumer"], - "operation": "contract.shared-consumers", - "fixtures": [ - "contract.example-note", - "type.shared-note", - "record.shared-note" - ], - "parameters": { - "consumers": ["consumer-alpha", "consumer-beta"] - }, - "covers": [ - "data_contracts.data_contract_discovery", - "data_contracts.data_contract_implementation_validation", - "data_contracts.data_contract_projection" - ], - "expect": { - "entries": [ - { - "sequence": 1, - "phase": "arrange", - "actor": "contract-store", - "operation": "contract.load", - "outcome": "succeeded", - "facts": { - "contract": "example.note", - "version": "1.0.0" - } - }, - { - "sequence": 2, - "phase": "arrange", - "actor": "contract-store", - "operation": "type.load", - "outcome": "succeeded", - "facts": { - "type": "shared_note", - "implements": "example.note" - } - }, - { - "sequence": 3, - "phase": "act", - "actor": "consumer-alpha", - "operation": "contract-view.read", - "outcome": "succeeded", - "facts": { - "contract": "example.note", - "view": { - "title": "One record, two consumers" - } - } - }, - { - "sequence": 4, - "phase": "act", - "actor": "consumer-beta", - "operation": "contract-view.read", - "outcome": "succeeded", - "facts": { - "contract": "example.note", - "view": { - "title": "One record, two consumers" - } - } - }, - { - "sequence": 5, - "phase": "observe", - "actor": "testbed", - "operation": "contract-view.compare", - "outcome": "succeeded", - "facts": { - "consumers": 2, - "same_contract": true, - "same_view": true - } - } - ] - } -} diff --git a/public/testbed/v0.1/scenarios/core.shared-type-contracts.json b/public/testbed/v0.1/scenarios/core.shared-type-contracts.json deleted file mode 100644 index f5279b7..0000000 --- a/public/testbed/v0.1/scenarios/core.shared-type-contracts.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "kind": "mdbase.testbed.scenario", - "protocol_version": "0.1", - "id": "core.shared-type-contracts", - "name": "One type exposes two independent contract views", - "description": "One local type implements two record contracts and each consumer observes only the normalized view it selected.", - "ring": "contract", - "profile": "data_contracts", - "roles": ["contract_store", "record_consumer"], - "operation": "contract.multiple-views", - "fixtures": [ - "contract.example-note", - "contract.example-summary", - "type.multi-contract-note", - "record.shared-note" - ], - "parameters": { - "consumers": ["note-consumer", "summary-consumer"] - }, - "covers": [ - "data_contracts.data_contract_discovery", - "data_contracts.data_contract_implementation_validation", - "data_contracts.data_contract_projection" - ], - "expect": { - "entries": [ - { - "sequence": 1, - "phase": "arrange", - "actor": "contract-store", - "operation": "contract.load", - "outcome": "succeeded", - "facts": { - "contracts": ["example.note", "example.summary"] - } - }, - { - "sequence": 2, - "phase": "arrange", - "actor": "contract-store", - "operation": "type.load", - "outcome": "succeeded", - "facts": { - "type": "shared_note", - "implements": ["example.note", "example.summary"] - } - }, - { - "sequence": 3, - "phase": "act", - "actor": "note-consumer", - "operation": "contract-view.read", - "outcome": "succeeded", - "facts": { - "contract": "example.note", - "view": { - "title": "One record, two consumers" - } - } - }, - { - "sequence": 4, - "phase": "act", - "actor": "summary-consumer", - "operation": "contract-view.read", - "outcome": "succeeded", - "facts": { - "contract": "example.summary", - "view": { - "label": "One record, two consumers" - } - } - }, - { - "sequence": 5, - "phase": "observe", - "actor": "testbed", - "operation": "contract-view.compare", - "outcome": "succeeded", - "facts": { - "same_record": true, - "views_are_distinct": true - } - } - ] - } -} diff --git a/public/testbed/v0.1/scenarios/interop.action-ambiguous.json b/public/testbed/v0.1/scenarios/interop.action-ambiguous.json deleted file mode 100644 index 69c1387..0000000 --- a/public/testbed/v0.1/scenarios/interop.action-ambiguous.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "kind": "mdbase.testbed.scenario", - "protocol_version": "0.1", - "id": "interop.action-ambiguous", - "name": "Multiple eligible providers are explicitly ambiguous", - "ring": "interop", - "profile": "event_action_interop/0.1", - "roles": ["action_caller", "action_provider", "bridge"], - "operation": "interop.action-ambiguous", - "fixtures": ["contract.record-annotate"], - "parameters": { - "providers": ["provider-alpha", "provider-beta"] - }, - "covers": [ - "event_action_interop/0.1.explicit_provider_ambiguity" - ], - "expect": { - "entries": [ - { - "sequence": 1, - "phase": "arrange", - "actor": "provider-alpha", - "operation": "action-provider.register", - "outcome": "succeeded", - "facts": { - "contract": "example.record.annotate" - } - }, - { - "sequence": 2, - "phase": "arrange", - "actor": "provider-beta", - "operation": "action-provider.register", - "outcome": "succeeded", - "facts": { - "contract": "example.record.annotate" - } - }, - { - "sequence": 3, - "phase": "act", - "actor": "caller", - "operation": "action.invoke", - "outcome": "rejected", - "facts": { - "code": "ambiguous_provider", - "provider_calls": 0 - } - } - ] - } -} diff --git a/public/testbed/v0.1/scenarios/interop.action-explicit-provider.json b/public/testbed/v0.1/scenarios/interop.action-explicit-provider.json deleted file mode 100644 index aa399bb..0000000 --- a/public/testbed/v0.1/scenarios/interop.action-explicit-provider.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kind": "mdbase.testbed.scenario", - "protocol_version": "0.1", - "id": "interop.action-explicit-provider", - "name": "An explicit selector resolves provider ambiguity", - "ring": "interop", - "profile": "event_action_interop/0.1", - "roles": ["action_caller", "action_provider", "bridge"], - "operation": "interop.action-explicit-provider", - "fixtures": ["contract.record-annotate"], - "parameters": { - "providers": ["provider-alpha", "provider-beta"], - "selected": "provider-beta" - }, - "covers": [ - "event_action_interop/0.1.explicit_provider_ambiguity", - "event_action_interop/0.1.exact_contract_and_provider_evidence" - ], - "expect": { - "entries": [ - { - "sequence": 1, - "phase": "arrange", - "actor": "provider-alpha", - "operation": "action-provider.register", - "outcome": "succeeded", - "facts": { - "contract": "example.record.annotate" - } - }, - { - "sequence": 2, - "phase": "arrange", - "actor": "provider-beta", - "operation": "action-provider.register", - "outcome": "succeeded", - "facts": { - "contract": "example.record.annotate" - } - }, - { - "sequence": 3, - "phase": "act", - "actor": "caller", - "operation": "action.invoke", - "outcome": "succeeded", - "facts": { - "selected": "provider-beta" - } - }, - { - "sequence": 4, - "phase": "observe", - "actor": "bridge", - "operation": "action.outcome", - "outcome": "succeeded", - "facts": { - "provider": "provider-beta", - "provider_alpha_calls": 0, - "provider_beta_calls": 1 - } - } - ] - } -} diff --git a/public/testbed/v0.1/scenarios/interop.action-single-provider.json b/public/testbed/v0.1/scenarios/interop.action-single-provider.json deleted file mode 100644 index 33a1999..0000000 --- a/public/testbed/v0.1/scenarios/interop.action-single-provider.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "kind": "mdbase.testbed.scenario", - "protocol_version": "0.1", - "id": "interop.action-single-provider", - "name": "A single eligible provider is invoked", - "ring": "interop", - "profile": "event_action_interop/0.1", - "roles": ["action_caller", "action_provider", "bridge"], - "operation": "interop.action-single-provider", - "fixtures": ["contract.record-annotate"], - "parameters": { - "request_id": "req-single-1", - "provider": "provider-alpha" - }, - "covers": [ - "event_action_interop/0.1.action_request_admission_and_outcome", - "event_action_interop/0.1.exact_contract_and_provider_evidence" - ], - "expect": { - "entries": [ - { - "sequence": 1, - "phase": "arrange", - "actor": "provider-alpha", - "operation": "action-provider.register", - "outcome": "succeeded", - "facts": { - "contract": "example.record.annotate", - "idempotency": "request" - } - }, - { - "sequence": 2, - "phase": "act", - "actor": "caller", - "operation": "action.invoke", - "outcome": "succeeded", - "facts": { - "request_id": "req-single-1" - } - }, - { - "sequence": 3, - "phase": "observe", - "actor": "bridge", - "operation": "action.outcome", - "outcome": "succeeded", - "facts": { - "exact_contract": true, - "provider": "provider-alpha", - "provider_calls": 1, - "request_id": "req-single-1" - } - } - ] - } -} diff --git a/public/testbed/v0.1/scenarios/interop.application-event-multicast.json b/public/testbed/v0.1/scenarios/interop.application-event-multicast.json deleted file mode 100644 index dafd078..0000000 --- a/public/testbed/v0.1/scenarios/interop.application-event-multicast.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "kind": "mdbase.testbed.scenario", - "protocol_version": "0.1", - "id": "interop.application-event-multicast", - "name": "An application event source reaches two independent consumers", - "description": "A real application-owned event contract is multicast without making its product-specific payload part of the neutral oracle.", - "ring": "interop", - "profile": "event_action_interop/0.1", - "roles": ["event_source", "event_consumer", "bridge"], - "operation": "interop.application-event-multicast", - "fixtures": [], - "parameters": {}, - "covers": [ - "event_action_interop/0.1.cloudevents_event_envelope", - "event_action_interop/0.1.event_multicast_and_version_resolution", - "event_action_interop/0.1.boundary_validation" - ], - "expect": { - "entries": [ - { - "sequence": 1, - "phase": "arrange", - "actor": "application", - "operation": "contract.describe", - "outcome": "succeeded", - "facts": { - "contract_type": "event", - "schema": "json-schema-2020-12" - } - }, - { - "sequence": 2, - "phase": "arrange", - "actor": "application", - "operation": "event-source.register", - "outcome": "succeeded", - "facts": { - "sources": 1 - } - }, - { - "sequence": 3, - "phase": "arrange", - "actor": "consumers", - "operation": "event.subscribe", - "outcome": "succeeded", - "facts": { - "consumers": 2 - } - }, - { - "sequence": 4, - "phase": "act", - "actor": "application", - "operation": "event.publish", - "outcome": "succeeded", - "facts": { - "exact_contract": true, - "specversion": "1.0" - } - }, - { - "sequence": 5, - "phase": "observe", - "actor": "bridge", - "operation": "event.deliver", - "outcome": "succeeded", - "facts": { - "deliveries": 2, - "distinct_consumers": 2 - } - } - ] - } -} diff --git a/public/testbed/v0.1/scenarios/interop.application-provider-lifecycle.json b/public/testbed/v0.1/scenarios/interop.application-provider-lifecycle.json deleted file mode 100644 index 90b250e..0000000 --- a/public/testbed/v0.1/scenarios/interop.application-provider-lifecycle.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "kind": "mdbase.testbed.scenario", - "protocol_version": "0.1", - "id": "interop.application-provider-lifecycle", - "name": "An application provider validates, invokes, and unloads cleanly", - "description": "A real application-owned action contract is exercised without making its product-specific contract part of the neutral oracle.", - "ring": "interop", - "profile": "event_action_interop/0.1", - "roles": ["action_caller", "action_provider", "bridge"], - "operation": "interop.application-provider-lifecycle", - "fixtures": [], - "parameters": {}, - "covers": [ - "event_action_interop/0.1.action_request_admission_and_outcome", - "event_action_interop/0.1.boundary_validation", - "event_action_interop/0.1.cancellation_and_unload" - ], - "expect": { - "entries": [ - { - "sequence": 1, - "phase": "arrange", - "actor": "application", - "operation": "contract.describe", - "outcome": "succeeded", - "facts": { - "contract_type": "action", - "schema": "json-schema-2020-12" - } - }, - { - "sequence": 2, - "phase": "arrange", - "actor": "application", - "operation": "action-provider.register", - "outcome": "succeeded", - "facts": { - "providers": 1 - } - }, - { - "sequence": 3, - "phase": "act", - "actor": "caller", - "operation": "action.invoke", - "outcome": "succeeded", - "facts": { - "exact_contract": true, - "provider_calls": 1 - } - }, - { - "sequence": 4, - "phase": "act", - "actor": "caller", - "operation": "action.invoke", - "outcome": "rejected", - "facts": { - "code": "invalid_action_input" - } - }, - { - "sequence": 5, - "phase": "act", - "actor": "application", - "operation": "client.dispose", - "outcome": "succeeded", - "facts": { - "providers": 0 - } - }, - { - "sequence": 6, - "phase": "observe", - "actor": "caller", - "operation": "action.invoke", - "outcome": "rejected", - "facts": { - "code": "no_provider" - } - } - ] - } -} diff --git a/public/testbed/v0.1/scenarios/interop.authority-boundary.json b/public/testbed/v0.1/scenarios/interop.authority-boundary.json deleted file mode 100644 index 16815c3..0000000 --- a/public/testbed/v0.1/scenarios/interop.authority-boundary.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "kind": "mdbase.testbed.scenario", - "protocol_version": "0.1", - "id": "interop.authority-boundary", - "name": "Contract compatibility never grants provider authority", - "ring": "interop", - "profile": "event_action_interop/0.1", - "roles": ["action_provider", "bridge"], - "operation": "interop.authority-boundary", - "fixtures": ["contract.record-annotate"], - "parameters": { - "denied_application": "untrusted-provider" - }, - "covers": [ - "event_action_interop/0.1.independent_authorization" - ], - "expect": { - "entries": [ - { - "sequence": 1, - "phase": "arrange", - "actor": "untrusted-provider", - "operation": "contract.validate", - "outcome": "succeeded", - "facts": { - "contract": "example.record.annotate" - } - }, - { - "sequence": 2, - "phase": "act", - "actor": "untrusted-provider", - "operation": "action-provider.register", - "outcome": "rejected", - "facts": { - "code": "unauthorized" - } - }, - { - "sequence": 3, - "phase": "observe", - "actor": "bridge", - "operation": "registry.inspect", - "outcome": "succeeded", - "facts": { - "providers": 0 - } - } - ] - } -} diff --git a/public/testbed/v0.1/scenarios/interop.contract-digest-drift.json b/public/testbed/v0.1/scenarios/interop.contract-digest-drift.json deleted file mode 100644 index 8afd818..0000000 --- a/public/testbed/v0.1/scenarios/interop.contract-digest-drift.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "kind": "mdbase.testbed.scenario", - "protocol_version": "0.1", - "id": "interop.contract-digest-drift", - "name": "Digest drift for one exact contract identity fails atomically", - "ring": "interop", - "profile": "event_action_interop/0.1", - "roles": ["event_source", "bridge"], - "operation": "interop.contract-digest-drift", - "fixtures": ["contract.record-changed"], - "parameters": { - "mutate": "data_schema.value.properties.record_id.minLength" - }, - "covers": [ - "event_action_interop/0.1.first_class_event_and_action_contracts", - "event_action_interop/0.1.boundary_validation" - ], - "expect": { - "entries": [ - { - "sequence": 1, - "phase": "arrange", - "actor": "source-alpha", - "operation": "event-source.register", - "outcome": "succeeded", - "facts": { - "sources": 1 - } - }, - { - "sequence": 2, - "phase": "act", - "actor": "source-beta", - "operation": "event-source.register", - "outcome": "rejected", - "facts": { - "code": "contract_digest_conflict" - } - }, - { - "sequence": 3, - "phase": "observe", - "actor": "bridge", - "operation": "registry.inspect", - "outcome": "succeeded", - "facts": { - "atomic": true, - "sources": 1 - } - } - ] - } -} diff --git a/public/testbed/v0.1/scenarios/interop.event-multicast.json b/public/testbed/v0.1/scenarios/interop.event-multicast.json deleted file mode 100644 index 9badddf..0000000 --- a/public/testbed/v0.1/scenarios/interop.event-multicast.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "kind": "mdbase.testbed.scenario", - "protocol_version": "0.1", - "id": "interop.event-multicast", - "name": "One event is multicast to every compatible consumer", - "ring": "interop", - "profile": "event_action_interop/0.1", - "roles": ["event_source", "event_consumer", "bridge"], - "operation": "interop.event-multicast", - "fixtures": ["contract.record-changed"], - "parameters": { - "event_id": "evt-shared-1", - "consumers": ["consumer-alpha", "consumer-beta"] - }, - "covers": [ - "event_action_interop/0.1.cloudevents_event_envelope", - "event_action_interop/0.1.event_multicast_and_version_resolution" - ], - "expect": { - "entries": [ - { - "sequence": 1, - "phase": "arrange", - "actor": "source", - "operation": "event-source.register", - "outcome": "succeeded", - "facts": { - "contract": "example.record.changed", - "version": "1.0.0" - } - }, - { - "sequence": 2, - "phase": "arrange", - "actor": "consumer-alpha", - "operation": "event.subscribe", - "outcome": "succeeded", - "facts": { - "version": "^1.0.0" - } - }, - { - "sequence": 3, - "phase": "arrange", - "actor": "consumer-beta", - "operation": "event.subscribe", - "outcome": "succeeded", - "facts": { - "version": ">=1.0.0 <2.0.0" - } - }, - { - "sequence": 4, - "phase": "act", - "actor": "source", - "operation": "event.publish", - "outcome": "succeeded", - "facts": { - "event_id": "evt-shared-1" - } - }, - { - "sequence": 5, - "phase": "observe", - "actor": "bridge", - "operation": "event.deliver", - "outcome": "succeeded", - "facts": { - "consumers": ["consumer-alpha", "consumer-beta"], - "deliveries": 2, - "duplicate": false, - "exact_contract": true, - "specversion": "1.0" - } - } - ] - } -} diff --git a/public/testbed/v0.1/scenarios/interop.invalid-payload.json b/public/testbed/v0.1/scenarios/interop.invalid-payload.json deleted file mode 100644 index 781e26d..0000000 --- a/public/testbed/v0.1/scenarios/interop.invalid-payload.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "kind": "mdbase.testbed.scenario", - "protocol_version": "0.1", - "id": "interop.invalid-payload", - "name": "Invalid event data is rejected before delivery", - "ring": "interop", - "profile": "event_action_interop/0.1", - "roles": ["event_source", "event_consumer", "bridge"], - "operation": "interop.invalid-payload", - "fixtures": ["contract.record-changed"], - "parameters": { - "data": { - "record_id": "note-1" - } - }, - "covers": [ - "event_action_interop/0.1.boundary_validation" - ], - "expect": { - "entries": [ - { - "sequence": 1, - "phase": "arrange", - "actor": "source", - "operation": "event-source.register", - "outcome": "succeeded", - "facts": { - "contract": "example.record.changed" - } - }, - { - "sequence": 2, - "phase": "arrange", - "actor": "consumer", - "operation": "event.subscribe", - "outcome": "succeeded", - "facts": { - "version": "^1.0.0" - } - }, - { - "sequence": 3, - "phase": "act", - "actor": "source", - "operation": "event.publish", - "outcome": "rejected", - "facts": { - "code": "invalid_event_data" - } - }, - { - "sequence": 4, - "phase": "observe", - "actor": "consumer", - "operation": "event.deliver", - "outcome": "skipped", - "facts": { - "deliveries": 0 - } - } - ] - } -} diff --git a/public/testbed/v0.1/scenarios/interop.provider-disappearance.json b/public/testbed/v0.1/scenarios/interop.provider-disappearance.json deleted file mode 100644 index e42ff65..0000000 --- a/public/testbed/v0.1/scenarios/interop.provider-disappearance.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "kind": "mdbase.testbed.scenario", - "protocol_version": "0.1", - "id": "interop.provider-disappearance", - "name": "Unloading a provider removes it from admission", - "ring": "interop", - "profile": "event_action_interop/0.1", - "roles": ["action_caller", "action_provider", "bridge"], - "operation": "interop.provider-disappearance", - "fixtures": ["contract.record-annotate"], - "parameters": { - "provider": "provider-alpha" - }, - "covers": [ - "event_action_interop/0.1.cancellation_and_unload" - ], - "expect": { - "entries": [ - { - "sequence": 1, - "phase": "arrange", - "actor": "provider-alpha", - "operation": "action-provider.register", - "outcome": "succeeded", - "facts": { - "providers": 1 - } - }, - { - "sequence": 2, - "phase": "act", - "actor": "provider-alpha", - "operation": "client.dispose", - "outcome": "succeeded", - "facts": { - "providers": 0 - } - }, - { - "sequence": 3, - "phase": "observe", - "actor": "caller", - "operation": "action.invoke", - "outcome": "rejected", - "facts": { - "code": "no_provider", - "provider_calls": 0 - } - } - ] - } -} diff --git a/public/testbed/v0.1/scenarios/interop.request-replay.json b/public/testbed/v0.1/scenarios/interop.request-replay.json deleted file mode 100644 index ac3338d..0000000 --- a/public/testbed/v0.1/scenarios/interop.request-replay.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "kind": "mdbase.testbed.scenario", - "protocol_version": "0.1", - "id": "interop.request-replay", - "name": "A declared idempotent request reuses its recorded outcome", - "ring": "interop", - "profile": "event_action_interop/0.1", - "roles": ["action_caller", "action_provider", "bridge"], - "operation": "interop.request-replay", - "fixtures": ["contract.record-annotate"], - "parameters": { - "request_id": "req-replay-1", - "idempotency_key": "run-1:annotate" - }, - "covers": [ - "event_action_interop/0.1.duplicate_and_indeterminate_semantics" - ], - "expect": { - "entries": [ - { - "sequence": 1, - "phase": "arrange", - "actor": "provider-alpha", - "operation": "action-provider.register", - "outcome": "succeeded", - "facts": { - "idempotency": "request" - } - }, - { - "sequence": 2, - "phase": "act", - "actor": "caller", - "operation": "action.invoke", - "outcome": "succeeded", - "facts": { - "request_id": "req-replay-1" - } - }, - { - "sequence": 3, - "phase": "act", - "actor": "caller", - "operation": "action.replay", - "outcome": "succeeded", - "facts": { - "request_id": "req-replay-1" - } - }, - { - "sequence": 4, - "phase": "observe", - "actor": "bridge", - "operation": "action.outcome", - "outcome": "succeeded", - "facts": { - "handler_calls": 1, - "same_outcome": true - } - } - ] - } -} diff --git a/public/testbed/v0.1/scenarios/runtime.application-execution.json b/public/testbed/v0.1/scenarios/runtime.application-execution.json deleted file mode 100644 index c913726..0000000 --- a/public/testbed/v0.1/scenarios/runtime.application-execution.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "kind": "mdbase.testbed.scenario", - "protocol_version": "0.1", - "id": "runtime.application-execution", - "name": "An application-owned runtime executes one exact admitted effect", - "description": "A product runtime composes its real contracts, admits an exact source/provider plan, authorizes dispatch, and persists one successful run.", - "ring": "runtime", - "profile": "runtime/0.2", - "roles": ["event_source", "action_provider", "runtime", "runtime_store"], - "operation": "runtime.application-execution", - "fixtures": [], - "parameters": {}, - "covers": [ - "runtime/0.2.exact_contract_source_and_provider_admission", - "runtime/0.2.dispatch_authorization", - "runtime/0.2.durable_event_admission" - ], - "expect": { - "entries": [ - { - "sequence": 1, - "phase": "arrange", - "actor": "application-runtime", - "operation": "catalog.compose", - "outcome": "succeeded", - "facts": { - "contracts_verified": true, - "executor_selected": true - } - }, - { - "sequence": 2, - "phase": "act", - "actor": "event-source", - "operation": "event.publish", - "outcome": "succeeded", - "facts": { - "exact_contract": true - } - }, - { - "sequence": 3, - "phase": "act", - "actor": "application-runtime", - "operation": "event.admit", - "outcome": "succeeded", - "facts": { - "runs": 1 - } - }, - { - "sequence": 4, - "phase": "act", - "actor": "action-provider", - "operation": "action.dispatch", - "outcome": "succeeded", - "facts": { - "authorization_checked": true, - "provider_calls": 1 - } - }, - { - "sequence": 5, - "phase": "observe", - "actor": "runtime-store", - "operation": "run.inspect", - "outcome": "succeeded", - "facts": { - "exact_bindings": true, - "status": "succeeded" - } - } - ] - } -} diff --git a/public/testbed/v0.1/scenarios/runtime.competing-workers.json b/public/testbed/v0.1/scenarios/runtime.competing-workers.json deleted file mode 100644 index 4277796..0000000 --- a/public/testbed/v0.1/scenarios/runtime.competing-workers.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "kind": "mdbase.testbed.scenario", - "protocol_version": "0.1", - "id": "runtime.competing-workers", - "name": "Competing workers are fenced by one durable lease", - "ring": "runtime", - "profile": "runtime/0.2", - "roles": ["runtime", "runtime_store"], - "operation": "runtime.competing-workers", - "fixtures": [ - "contract.record-changed", - "contract.record-annotate", - "workflow.annotate-changed", - "policy.allow-record-write" - ], - "parameters": { - "event_id": "evt-fence-1", - "workers": ["worker-alpha", "worker-beta"] - }, - "covers": [ - "runtime/0.2.idempotency_and_concurrency", - "runtime/0.2.lease_and_crash_recovery", - "runtime/0.2.run_state_machine" - ], - "expect": { - "entries": [ - { - "sequence": 1, - "phase": "arrange", - "actor": "runtime", - "operation": "event.admit", - "outcome": "succeeded", - "facts": { - "event_id": "evt-fence-1", - "runs": 1 - } - }, - { - "sequence": 2, - "phase": "act", - "actor": "worker-alpha", - "operation": "run.claim", - "outcome": "succeeded", - "facts": { - "claims": 1 - } - }, - { - "sequence": 3, - "phase": "act", - "actor": "worker-beta", - "operation": "run.claim", - "outcome": "skipped", - "facts": { - "claims": 0 - } - }, - { - "sequence": 4, - "phase": "recover", - "actor": "worker-alpha", - "operation": "run.commit", - "outcome": "rejected", - "facts": { - "code": "stale_lease" - } - }, - { - "sequence": 5, - "phase": "observe", - "actor": "runtime-store", - "operation": "run.inspect", - "outcome": "succeeded", - "facts": { - "concurrent_claims": 1, - "runs": 1, - "winner": "worker-beta" - } - } - ] - } -} diff --git a/public/testbed/v0.1/scenarios/runtime.crash-recovery.json b/public/testbed/v0.1/scenarios/runtime.crash-recovery.json deleted file mode 100644 index 8bcf9b8..0000000 --- a/public/testbed/v0.1/scenarios/runtime.crash-recovery.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "kind": "mdbase.testbed.scenario", - "protocol_version": "0.1", - "id": "runtime.crash-recovery", - "name": "An unknown idempotent dispatch recovers without a duplicate effect", - "ring": "runtime", - "profile": "runtime/0.2", - "roles": ["runtime", "runtime_store", "action_provider"], - "operation": "runtime.crash-recovery", - "fixtures": [ - "contract.record-changed", - "contract.record-annotate", - "workflow.annotate-changed", - "policy.allow-record-write" - ], - "parameters": { - "event_id": "evt-crash-1", - "failpoint": "after_provider_effect_before_result_commit", - "expire_lease": true - }, - "covers": [ - "runtime/0.2.durable_action_attempts", - "runtime/0.2.lease_and_crash_recovery" - ], - "expect": { - "entries": [ - { - "sequence": 1, - "phase": "arrange", - "actor": "runtime", - "operation": "event.admit", - "outcome": "succeeded", - "facts": { - "event_id": "evt-crash-1", - "runs": 1 - } - }, - { - "sequence": 2, - "phase": "act", - "actor": "worker-alpha", - "operation": "action.dispatch", - "outcome": "indeterminate", - "facts": { - "provider_effects": 1 - } - }, - { - "sequence": 3, - "phase": "recover", - "actor": "worker-beta", - "operation": "lease.recover", - "outcome": "succeeded", - "facts": { - "same_attempt_id": true, - "same_invocation_id": true - } - }, - { - "sequence": 4, - "phase": "observe", - "actor": "runtime-store", - "operation": "run.inspect", - "outcome": "succeeded", - "facts": { - "dispatches": 2, - "logical_effects": 1, - "status": "succeeded" - } - } - ] - } -} diff --git a/public/theme-bootstrap.js b/public/theme-bootstrap.js deleted file mode 100644 index 3e60606..0000000 --- a/public/theme-bootstrap.js +++ /dev/null @@ -1,8 +0,0 @@ -try { - const theme = localStorage.getItem("mdbase:theme"); - if (theme === "light" || theme === "dark") document.documentElement.dataset.theme = theme; - const dark = theme === "dark" || (theme !== "light" && matchMedia("(prefers-color-scheme: dark)").matches); - document.querySelector('meta[name="theme-color"]')?.setAttribute("content", dark ? "#1c1e24" : "#fcfcfd"); -} catch { - // The system preference remains available when local storage is unavailable. -} diff --git a/src/data/conformance.json b/src/data/conformance.json deleted file mode 100644 index 390d3c0..0000000 --- a/src/data/conformance.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "generated_at": "2026-10-03", - "spec_version": "0.3.0", - "implementations": [ - { - "name": "mdbase-rs", - "language": "Rust", - "version": "0.4.0-rc.5", - "repository": "https://github.com/callumalpass/mdbase-rs", - "evidence_date": "2026-09-27", - "profiles": [ - "core_read", - "collection_semantics", - "data_contracts", - "cel", - "cel_match", - "cel_query", - "links", - "core_write", - "type_packs", - "lifecycle", - "watch" - ], - "optional_features": [], - "workflow_execution": false, - "note": "The claim uses the machine-readable v0.3 atomic profiles." - }, - { - "name": "mdbase", - "language": "TypeScript", - "version": "0.3.0-rc.7", - "repository": "https://github.com/callumalpass/mdbase", - "evidence_date": "2026-09-27", - "profiles": [ - "core_read", - "collection_semantics", - "data_contracts", - "cel", - "cel_match", - "cel_query", - "links", - "core_write", - "type_packs", - "lifecycle" - ], - "optional_features": [ - "view_records" - ], - "workflow_execution": false, - "note": "The claim uses the machine-readable v0.3 atomic profiles." - }, - { - "name": "mdbase-runtime-rs", - "language": "Rust", - "version": "0.3.0-rc.1", - "repository": "https://github.com/callumalpass/mdbase-rs", - "evidence_date": "2026-07-29", - "profiles": [ - "core_read", - "cel", - "event_action_interop/0.1", - "runtime/0.2" - ], - "optional_features": [], - "workflow_execution": true, - "note": "Durable Runtime 0.2; interoperability 0.1." - }, - { - "name": "mdbase-interop", - "language": "TypeScript", - "version": "0.1.0-rc.2", - "repository": "https://github.com/mdbase-dev/mdbase-spec", - "evidence_date": null, - "profiles": [ - "event_action_interop/0.1" - ], - "optional_features": [], - "workflow_execution": false, - "note": "Reference ephemeral bridge; roles: event_source, event_consumer, action_caller, action_provider, bridge." - } - ], - "coverage": { - "coverage_complete": [ - "core_read", - "collection_semantics", - "data_contracts" - ], - "draft": [ - "cel", - "cel_match", - "cel_query", - "links", - "core_write", - "type_packs", - "lifecycle", - "event_action_interop/0.1", - "runtime/0.2", - "watch" - ] - } -} diff --git a/src/data/contracts.json b/src/data/contracts.json deleted file mode 100644 index e9a079b..0000000 --- a/src/data/contracts.json +++ /dev/null @@ -1,884 +0,0 @@ -{ - "catalog_version": 2, - "id": "dev.mdbase.first-party", - "name": "mdbase contracts", - "description": "Reviewed first-party contracts and starter type packs for mdbase collections.", - "homepage": "https://mdbase.dev/contracts/", - "publisher": { - "name": "mdbase", - "url": "https://mdbase.dev/" - }, - "contracts": [ - { - "id": "mdbase.comment", - "version": "1.0.0", - "name": "Comment", - "description": "Comments, replies and suggested edits anchored to text in Markdown records.", - "contract_type": "record", - "digest": "sha256:c85663fbb339d33e8e67825c81fc160fbac00285a1687cbe99187bad7f58878d", - "artifact": "./artifacts/contracts/mdbase.comment/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.contact", - "version": "1.0.0", - "name": "Contact", - "description": "A compact application-facing view of a person or organisation.", - "contract_type": "record", - "digest": "sha256:e3634a35737ada5eb62e3e15f1c0c9d2e27c55a3f98dfab94bbc14c40404903d", - "artifact": "./artifacts/contracts/mdbase.contact/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.person", - "version": "1.0.0", - "name": "Person", - "description": "A portable person reference with editable account identity associations.", - "contract_type": "record", - "digest": "sha256:e2a9435ad01a2c06c151bf6af62a9d04aa30faa8e6128e4b5fe39378c767465c", - "artifact": "./artifacts/contracts/mdbase.person/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.person", - "version": "2.0.0", - "name": "Person", - "description": "A person record, referenced by links, with editable account identity associations.", - "contract_type": "record", - "digest": "sha256:2899b149b1602bd4e51ff8e87c82dc92da3f690f4e89b1a6caf5b2b555540fe5", - "artifact": "./artifacts/contracts/mdbase.person/2.0.0.md", - "standards": [] - }, - { - "id": "mdbase.record.created", - "version": "1.0.0", - "name": "Record created", - "description": "Published after a record is created and derived collection state is consistent.", - "contract_type": "event", - "digest": "sha256:4c157f94e63d1f4fb1a74da640e03264ccb6c78cfa9f88ddb71b09c8bd6d1d44", - "artifact": "./artifacts/contracts/mdbase.record.created/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.record.deleted", - "version": "1.0.0", - "name": "Record deleted", - "description": "Published after a record is deleted and derived collection state is consistent.", - "contract_type": "event", - "digest": "sha256:cb4f4a09f9f9b1f7f5e2207de0074ce02fd89008c08386626fd964a29299f956", - "artifact": "./artifacts/contracts/mdbase.record.deleted/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.record.modified", - "version": "1.0.0", - "name": "Record modified", - "description": "Published after a record is modified and derived collection state is consistent.", - "contract_type": "event", - "digest": "sha256:2f670ef18bf7330fbba73861f41889ee946b33644074ca7366e88913f6e4d88a", - "artifact": "./artifacts/contracts/mdbase.record.modified/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.record.renamed", - "version": "1.0.0", - "name": "Record renamed", - "description": "Published after a record is renamed and derived collection state is consistent.", - "contract_type": "event", - "digest": "sha256:b6c507198379ba48408c9b48161a1c22d46dad2d291691af449167618484bb4c", - "artifact": "./artifacts/contracts/mdbase.record.renamed/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.action-attempt", - "version": "1.0.0", - "name": "Durable action attempt", - "description": "Durable invocation intent and outcome evidence using the shared interoperability envelope.", - "contract_type": "record", - "digest": "sha256:04c1bf55580d0d280d2be645c56177da25c2d0129f8fa71def7d5f96cf0ea629", - "artifact": "./artifacts/contracts/mdbase.runtime.action-attempt/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.capability-grant", - "version": "1.0.0", - "name": "Capability grant evidence", - "description": "A materialized authorization grant scoped independently from contract conformance.", - "contract_type": "record", - "digest": "sha256:1cd3a2ff5fdc9294f766e538c371ed278ad4c54452480ba6fcc2870be08b47a1", - "artifact": "./artifacts/contracts/mdbase.runtime.capability-grant/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.checkpoint", - "version": "1.0.0", - "name": "Runtime checkpoint", - "description": "A durable, lease-safe workflow continuation.", - "contract_type": "record", - "digest": "sha256:6413676d7482a71b31cbe4abf8c5a543a54a530ef62f669f8ef8e21bcc6bc237", - "artifact": "./artifacts/contracts/mdbase.runtime.checkpoint/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.dead-letter", - "version": "1.0.0", - "name": "Runtime dead letter", - "description": "Retained event or action evidence that cannot be processed safely.", - "contract_type": "record", - "digest": "sha256:737d08bad6662e087c3393f6f17d24374f258d60b41112a3f864cb5138af8edd", - "artifact": "./artifacts/contracts/mdbase.runtime.dead-letter/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.diagnostic", - "version": "1.0.0", - "name": "Runtime diagnostic", - "description": "A machine-readable durable runtime diagnostic.", - "contract_type": "record", - "digest": "sha256:2e7379de9ceefa6435e9c66a71f4292e4805e8038ed6496c83dad946900267f6", - "artifact": "./artifacts/contracts/mdbase.runtime.diagnostic/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.policy", - "version": "1.0.0", - "name": "Runtime policy", - "description": "Local authorization, executor, limit, and provider-selection policy.", - "contract_type": "record", - "digest": "sha256:319a9bd4ca62a246871ee52e0ef0250a82c240cb14a95f88e4a505ad04450300", - "artifact": "./artifacts/contracts/mdbase.runtime.policy/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.provider-registration", - "version": "1.0.0", - "name": "Provider registration evidence", - "description": "An optional audit snapshot of a verified interoperability declaration; it never activates code.", - "contract_type": "record", - "digest": "sha256:97d157efaeb311745fc84e2cbe01e8147aaf44109384090c154527b68838d766", - "artifact": "./artifacts/contracts/mdbase.runtime.provider-registration/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.run.cancel", - "version": "1.0.0", - "name": "Cancel durable runtime run", - "description": "Request cooperative cancellation of one durable runtime run.", - "contract_type": "action", - "digest": "sha256:949f039334cfc3f096beb870419baa08c3b40679b184e9849f9330a34a6f524d", - "artifact": "./artifacts/contracts/mdbase.runtime.run.cancel/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.run", - "version": "1.0.0", - "name": "Durable run", - "description": "The durable state and immutable admitted plan for one workflow execution.", - "contract_type": "record", - "digest": "sha256:7e46270c951e6634fe25519dff10523652365f8adf30b034f01e29e1ca48cadb", - "artifact": "./artifacts/contracts/mdbase.runtime.run/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.timer.fired", - "version": "1.0.0", - "name": "Runtime timer fired", - "description": "Published with scheduling evidence and opaque application data when the current generation of a durable timer fires.", - "contract_type": "event", - "digest": "sha256:9381a2c6778a3268758ac235e3c3b66991a769fa8e19f7303d4404b1e7e62bc6", - "artifact": "./artifacts/contracts/mdbase.runtime.timer.fired/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.timer", - "version": "1.0.0", - "name": "Runtime timer", - "description": "A generation-safe one-shot timer that publishes through the interoperability profile.", - "contract_type": "record", - "digest": "sha256:0500a421e81eef09c37bc4ef559e3805843e87a6e1b2cf2a393da4d76d4384fc", - "artifact": "./artifacts/contracts/mdbase.runtime.timer/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.runtime.workflow", - "version": "1.0.0", - "name": "Durable workflow", - "description": "A portable workflow whose event and action references are resolved and pinned at admission.", - "contract_type": "record", - "digest": "sha256:7cf8ed016bf6232d9c1abc8d8bb9bb25fd2af1ffa6c6094317aa65baf3c31049", - "artifact": "./artifacts/contracts/mdbase.runtime.workflow/1.0.0.md", - "standards": [] - }, - { - "id": "mdbase.view", - "version": "1.0.0", - "name": "Saved view", - "description": "Shared query scope and stable named views executable through the Query profile.", - "contract_type": "record", - "digest": "sha256:91eae42371c2d411b20d3c976aece3071bbd753963b77b6bcdc26137a8fdcded", - "artifact": "./artifacts/contracts/mdbase.view/1.0.0.md", - "standards": [] - }, - { - "id": "obsidian.base", - "version": "1.0.0", - "name": "Obsidian Base", - "description": "An Obsidian Bases saved-view source stored as a YAML document record.", - "contract_type": "record", - "digest": "sha256:fca77a9c845223784d4af7f5e13e2f149295621ad1b794ea9bb4d99f604467e8", - "artifact": "./artifacts/contracts/obsidian.base/1.0.0.md", - "standards": [] - }, - { - "id": "tasknotes.task", - "version": "0.3.0-rc.3", - "name": "TaskNotes task", - "description": "Portable task data and behavior defined by tasknotes-spec 0.3.0-rc.3.", - "contract_type": "record", - "digest": "sha256:4761ee78615882170cae6e52590f98917f549bd89d852a0c40568583394d7264", - "artifact": "./artifacts/contracts/tasknotes.task/0.3.0-rc.3.md", - "standards": [] - }, - { - "id": "tasknotes.task", - "version": "0.3.0-rc.5", - "name": "TaskNotes task", - "description": "Portable task data and behavior defined by tasknotes-spec 0.3.0-rc.5.", - "contract_type": "record", - "digest": "sha256:ecadd00700e249940f4244aaa5b5985a96557d13340463ec491dfa5e89b032a4", - "artifact": "./artifacts/contracts/tasknotes.task/0.3.0-rc.5.md", - "standards": [] - } - ], - "packs": [ - { - "id": "mdbase.comment", - "version": "1.0.0", - "name": "Comments type pack", - "description": "Comments, replies and suggested edits anchored to text in Markdown records.", - "digest": "sha256:37729ce8eca79ed52b669b191350056cbd23d2fe1453d38b56805979ce0d9e29", - "provision": "./packs/mdbase.comment/1.0.0.json", - "provides": [ - { - "id": "mdbase.comment", - "version": "1.0.0", - "digest": "sha256:c2c5b3f3013d10625310401e9f9149ffa2d09c5b7d91b4fc97688d3ac010bec5" - } - ], - "resource_count": 3, - "display": { - "name": "Comments", - "summary": "Discuss and suggest edits to notes without changing their text, in any app that reads comments.", - "category": "work", - "audience": "general", - "icon": "chat-circle", - "badges": [ - "Portable comments", - "Suggested edits" - ] - }, - "installation": { - "visibility": "hidden", - "recommendation": "optional", - "primary_type": "comment", - "types": [ - { - "name": "comment", - "label": "Comment" - } - ] - } - }, - { - "id": "mdbase.comment", - "version": "1.0.1", - "name": "Comments type pack", - "description": "Comments, replies and suggested edits anchored to text in Markdown records.", - "digest": "sha256:3b3940270e96876062d8fcdf293edb7eeb99985987b8821f8478acf9663d1e83", - "provision": "./packs/mdbase.comment/1.0.1.json", - "provides": [ - { - "id": "mdbase.comment", - "version": "1.0.0", - "digest": "sha256:c2c5b3f3013d10625310401e9f9149ffa2d09c5b7d91b4fc97688d3ac010bec5" - } - ], - "resource_count": 3, - "display": { - "name": "Comments", - "summary": "Discuss and suggest edits to notes without changing their text, in any app that reads comments.", - "category": "work", - "audience": "general", - "icon": "chat-circle", - "badges": [ - "Portable comments", - "Suggested edits" - ] - }, - "installation": { - "visibility": "default", - "recommendation": "optional", - "primary_type": "comment", - "types": [ - { - "name": "comment", - "label": "Comment" - } - ] - } - }, - { - "id": "mdbase.contact", - "version": "1.0.0", - "name": "Contact type pack", - "description": "A compact contact contract and a friendly, editable Contact type.", - "digest": "sha256:70c3ab048da407a56fe265a840c83a2d1df90aa351fde0d50ce1459a155cc4e9", - "provision": "./packs/mdbase.contact/1.0.0.json", - "provides": [ - { - "id": "mdbase.contact", - "version": "1.0.0", - "digest": "sha256:49cfe15403dfc741a693e89a2f4d2857de306f391d02cb03e67bfaf0aa1d6b0d" - } - ], - "resource_count": 3, - "display": { - "name": "Contact", - "summary": "Keep people and organisations with familiar names, email addresses, phone numbers, and birthdays.", - "category": "people", - "audience": "general", - "icon": "address-book", - "badges": [ - "Portable contact semantics" - ] - }, - "installation": { - "visibility": "hidden", - "recommendation": "user", - "primary_type": "contact", - "types": [ - { - "name": "contact", - "label": "Contact" - } - ] - } - }, - { - "id": "mdbase.contact", - "version": "1.1.0", - "name": "People and contacts type pack", - "description": "Portable people, editable account identity associations, and familiar contact fields.", - "digest": "sha256:14bba55df0574401b46ae08e5ef1e41e615d1477f70c3cc202eb9ff179287864", - "provision": "./packs/mdbase.contact/1.1.0.json", - "provides": [ - { - "id": "mdbase.person", - "version": "1.0.0", - "digest": "sha256:cda32ead27eaf70440efe3fadd8b5334df9af82f378b2af1bc786f7ab0bd0fc3" - }, - { - "id": "mdbase.contact", - "version": "1.0.0", - "digest": "sha256:49cfe15403dfc741a693e89a2f4d2857de306f391d02cb03e67bfaf0aa1d6b0d" - } - ], - "resource_count": 6, - "display": { - "name": "People and contacts", - "summary": "Reference people across apps and collections without tying records to account membership.", - "category": "people", - "audience": "general", - "icon": "user", - "badges": [ - "Portable person references" - ] - }, - "installation": { - "visibility": "hidden", - "recommendation": "user", - "primary_type": "contact", - "types": [ - { - "name": "contact", - "label": "Contact" - }, - { - "name": "person", - "label": "Person" - } - ] - } - }, - { - "id": "mdbase.contact", - "version": "1.2.0", - "name": "People type pack", - "description": "Portable people, editable account identity associations, and familiar contact fields.", - "digest": "sha256:dbbb3a874cfc5d69a2a5793c86dab801c16438d58a270b48bc7376fc8bbdfa2d", - "provision": "./packs/mdbase.contact/1.2.0.json", - "provides": [ - { - "id": "mdbase.person", - "version": "2.0.0", - "digest": "sha256:f16c462a1fd422f44ed055002f8476ec53c164107647fec782aeb74adeab2f9d" - }, - { - "id": "mdbase.contact", - "version": "1.0.0", - "digest": "sha256:49cfe15403dfc741a693e89a2f4d2857de306f391d02cb03e67bfaf0aa1d6b0d" - } - ], - "resource_count": 7, - "display": { - "name": "People", - "summary": "Reference people across apps and collections without tying records to account membership.", - "category": "people", - "audience": "general", - "icon": "user", - "badges": [ - "Portable person references" - ] - }, - "installation": { - "visibility": "hidden", - "recommendation": "user", - "primary_type": "person", - "types": [ - { - "name": "person", - "label": "Person" - } - ] - } - }, - { - "id": "mdbase.contact", - "version": "1.3.0", - "name": "People type pack", - "description": "Portable people, editable account identity associations, and familiar contact fields.", - "digest": "sha256:48fc070ae00c61ab5b20b9ffb385d20d2a468328da07e45e67c99602b05d02e8", - "provision": "./packs/mdbase.contact/1.3.0.json", - "provides": [ - { - "id": "mdbase.person", - "version": "2.0.0", - "digest": "sha256:f16c462a1fd422f44ed055002f8476ec53c164107647fec782aeb74adeab2f9d" - }, - { - "id": "mdbase.contact", - "version": "1.0.0", - "digest": "sha256:49cfe15403dfc741a693e89a2f4d2857de306f391d02cb03e67bfaf0aa1d6b0d" - } - ], - "resource_count": 7, - "display": { - "name": "People", - "summary": "Reference people across apps and collections without tying records to account membership.", - "category": "people", - "audience": "general", - "icon": "user", - "badges": [ - "Portable person references" - ] - }, - "installation": { - "visibility": "hidden", - "recommendation": "user", - "primary_type": "person", - "types": [ - { - "name": "person", - "label": "Person" - } - ] - } - }, - { - "id": "mdbase.contact", - "version": "1.4.0", - "name": "People type pack", - "description": "Portable people, editable account identity associations, and familiar contact fields.", - "digest": "sha256:741fcf0f50d13538eda1c9ee32df4d85e32549b8fb730350bb80b3323b09df93", - "provision": "./packs/mdbase.contact/1.4.0.json", - "provides": [ - { - "id": "mdbase.person", - "version": "2.0.0", - "digest": "sha256:f16c462a1fd422f44ed055002f8476ec53c164107647fec782aeb74adeab2f9d" - }, - { - "id": "mdbase.contact", - "version": "1.0.0", - "digest": "sha256:49cfe15403dfc741a693e89a2f4d2857de306f391d02cb03e67bfaf0aa1d6b0d" - } - ], - "resource_count": 7, - "display": { - "name": "People", - "summary": "Reference people across apps and collections without tying records to account membership.", - "category": "people", - "audience": "general", - "icon": "user", - "badges": [ - "Portable person references" - ] - }, - "installation": { - "visibility": "default", - "recommendation": "user", - "primary_type": "person", - "types": [ - { - "name": "person", - "label": "Person" - } - ] - } - }, - { - "id": "mdbase.runtime.standard", - "version": "0.2.0", - "name": "mdbase durable runtime standard library", - "description": "Runtime record implementations and inspectable built-in event/action contracts.", - "digest": "sha256:5d65a140774d673ab9e2e52b493799d4a4db7172e746474ffe45336ef3078577", - "provision": "./packs/mdbase.runtime.standard/0.2.0.json", - "provides": [ - { - "id": "mdbase.runtime.action-attempt", - "version": "1.0.0", - "digest": "sha256:06c3c86d3eb742050c26486a637acad8816399c87c7e981114cc3e1836873057" - }, - { - "id": "mdbase.runtime.capability-grant", - "version": "1.0.0", - "digest": "sha256:409aab0a7341788e1791ee6e47b5ff96b6b280e0f1dc3b6e18d467e5fc4bd971" - }, - { - "id": "mdbase.runtime.checkpoint", - "version": "1.0.0", - "digest": "sha256:e66aaa1ed134f5951308952cc681a0314c7322b25142a2dbcd2a0e76fffd8ebc" - }, - { - "id": "mdbase.runtime.dead-letter", - "version": "1.0.0", - "digest": "sha256:75428a52dd283104624b9177c5e90658375c6f6cceb27334af4243dc7b293ce4" - }, - { - "id": "mdbase.runtime.diagnostic", - "version": "1.0.0", - "digest": "sha256:ac2ad3683005373330b2b95b02a603d329ca4934f9ba5cc3294562e1f66e5004" - }, - { - "id": "mdbase.runtime.policy", - "version": "1.0.0", - "digest": "sha256:a67936dd3e29d50d85cd7004f350f38f76a773412fb74fca69b578e8f82e23a1" - }, - { - "id": "mdbase.runtime.provider-registration", - "version": "1.0.0", - "digest": "sha256:560c44fe51baf9357705e46c27d89b13b161f14ebe0b62d2d091048bbcf70587" - }, - { - "id": "mdbase.runtime.run", - "version": "1.0.0", - "digest": "sha256:1d6f66ae39655bbdd57d800b51493ec49ba81ddfd12f7b07b731cd6cf90eac02" - }, - { - "id": "mdbase.runtime.timer", - "version": "1.0.0", - "digest": "sha256:22bdd0bcfc4b2c59705526484c9d0d4d0580fb87abd2e9beae93d4464174602f" - }, - { - "id": "mdbase.runtime.workflow", - "version": "1.0.0", - "digest": "sha256:4ca1095cbe226ac5fc4394af0242fac9e4cb0e3c73a6a8a5f4899fac5d373604" - } - ], - "resource_count": 43, - "display": { - "name": "Runtime standard library", - "summary": "Internal records and contracts for durable workflows, runs, timers, and diagnostics.", - "category": "infrastructure", - "audience": "infrastructure", - "icon": "terminal-window", - "badges": [ - "Runtime 0.2" - ] - }, - "installation": { - "visibility": "advanced", - "recommendation": "integration-managed", - "primary_type": null, - "caution": "Most collections do not need this pack. Install it only when a runtime integration asks you to.", - "types": [ - { - "name": "runtime_workflow", - "label": "Runtime workflow" - }, - { - "name": "runtime_policy", - "label": "Runtime policy" - }, - { - "name": "runtime_provider_registration", - "label": "Runtime provider registration" - }, - { - "name": "runtime_capability_grant", - "label": "Runtime capability grant" - }, - { - "name": "runtime_run", - "label": "Runtime run" - }, - { - "name": "runtime_action_attempt", - "label": "Runtime action attempt" - }, - { - "name": "runtime_checkpoint", - "label": "Runtime checkpoint" - }, - { - "name": "runtime_timer", - "label": "Runtime timer" - }, - { - "name": "runtime_diagnostic", - "label": "Runtime diagnostic" - }, - { - "name": "runtime_dead_letter", - "label": "Runtime dead letter" - } - ] - } - }, - { - "id": "mdbase.view", - "version": "1.0.0", - "name": "Saved views", - "description": "The mdbase.view contract and an editable View type for saved, reusable queries.", - "digest": "sha256:d2a3ff8629699b183bb8117d7499697fecc7685ed8558cae6d9a87311d7cfd05", - "provision": "./packs/mdbase.view/1.0.0.json", - "provides": [ - { - "id": "mdbase.view", - "version": "1.0.0", - "digest": "sha256:0918acefce08cddd778fab768fe4f2e4615d263a0eec3e5330b6897c686d744e" - } - ], - "resource_count": 3, - "display": { - "name": "Saved views", - "summary": "Save reusable queries that any view-aware app can list and run.", - "category": "work", - "audience": "general", - "icon": "table", - "badges": [ - "Portable views" - ] - }, - "installation": { - "visibility": "hidden", - "recommendation": "optional", - "primary_type": "view", - "types": [ - { - "name": "view", - "label": "View" - } - ] - } - }, - { - "id": "mdbase.view", - "version": "1.0.1", - "name": "Saved views", - "description": "The mdbase.view contract and an editable View type for saved, reusable queries.", - "digest": "sha256:e93db5cd8449eb3b1e3cb795b0bf0477fc90124363745dd9aef7a88b1fbc8752", - "provision": "./packs/mdbase.view/1.0.1.json", - "provides": [ - { - "id": "mdbase.view", - "version": "1.0.0", - "digest": "sha256:0918acefce08cddd778fab768fe4f2e4615d263a0eec3e5330b6897c686d744e" - } - ], - "resource_count": 3, - "display": { - "name": "Saved views", - "summary": "Save reusable queries that any view-aware app can list and run.", - "category": "work", - "audience": "general", - "icon": "table", - "badges": [ - "Portable views" - ] - }, - "installation": { - "visibility": "default", - "recommendation": "optional", - "primary_type": "view", - "types": [ - { - "name": "view", - "label": "View" - } - ] - } - }, - { - "id": "obsidian.base", - "version": "1.0.0", - "name": "Obsidian Bases", - "description": "The obsidian.base contract and an editable type that stores Obsidian Bases as records.", - "digest": "sha256:8251b351a4b00c4ea3f4d49988ae45ab52ceaf2420f57ce8105ca4cfe5eafd50", - "provision": "./packs/obsidian.base/1.0.0.json", - "provides": [ - { - "id": "obsidian.base", - "version": "1.0.0", - "digest": "sha256:37e8a0bfb32bb4795c1b3c5dec613c32429aaa765dc33e4adc0c627a48f5c1ff" - } - ], - "resource_count": 2, - "display": { - "name": "Obsidian Bases", - "summary": "Use Obsidian Bases files as saved views that any view-aware app can list and run.", - "category": "work", - "audience": "general", - "icon": "table", - "badges": [ - "Obsidian compatible" - ] - }, - "installation": { - "visibility": "default", - "recommendation": "optional", - "primary_type": "obsidian_base", - "types": [ - { - "name": "obsidian_base", - "label": "Obsidian base" - } - ] - } - }, - { - "id": "tasknotes.task", - "version": "0.3.0-rc.12", - "name": "TaskNotes task type pack", - "description": "The portable TaskNotes task contract and an editable TaskNotes task type.", - "digest": "sha256:b1a051354b5af28c2a623f3b01db0d0d463c944605daf2c4c30069fcb99d3ce5", - "provision": "./packs/tasknotes.task/0.3.0-rc.12.json", - "provides": [ - { - "id": "tasknotes.task", - "version": "0.3.0-rc.3", - "digest": "sha256:48b9017ac0896ffbdee4d14fc0325ef86916bf8789da4ac8a4cd246435887155" - } - ], - "resource_count": 4, - "display": { - "name": "TaskNotes tasks", - "summary": "Manage portable Markdown tasks with dates, recurrence, reminders, relationships, and time tracking.", - "category": "work", - "audience": "general", - "icon": "square-check-big", - "badges": [ - "TaskNotes compatible" - ] - }, - "installation": { - "visibility": "default", - "recommendation": "integration-managed", - "primary_type": "task", - "caution": "TaskNotes applications manage the contract and schemas; the installed task type remains editable.", - "types": [ - { - "name": "task", - "label": "Task" - } - ] - } - }, - { - "id": "tasknotes.task", - "version": "0.3.0-rc.17", - "name": "TaskNotes task type pack", - "description": "Portable tasks whose assignments link to person records, with a reviewed, atomic starter upgrade that keeps each collection's generator bookkeeping.", - "digest": "sha256:aa03bd096f62868b4b414e753cd01024d33d8cd193c902f3cb0f3526c3149e8e", - "provision": "./packs/tasknotes.task/0.3.0-rc.17.json", - "provides": [ - { - "id": "tasknotes.task", - "version": "0.3.0-rc.5", - "digest": "sha256:dde71d0d776aa0069ee627fe3c10b1a20f87ba36929a16790598ebfb4e8ebf04" - } - ], - "resource_count": 4, - "display": { - "name": "TaskNotes tasks", - "summary": "Manage portable Markdown tasks, assignments, dates, recurrence, reminders, and time tracking.", - "category": "work", - "audience": "general", - "icon": "square-check-big", - "badges": [ - "TaskNotes compatible" - ] - }, - "installation": { - "visibility": "hidden", - "recommendation": "integration-managed", - "primary_type": "task", - "caution": "Upgrades the previous starter type while preserving independent customizations. Conflicts or other references to the previous contract block the whole upgrade.", - "types": [ - { - "name": "task", - "label": "Task" - } - ] - } - }, - { - "id": "tasknotes.task", - "version": "0.3.0-rc.18", - "name": "TaskNotes task type pack", - "description": "Portable tasks whose assignments link to person records, with a reviewed, atomic upgrade from every TaskNotes starter published before.", - "digest": "sha256:9a9ebc26e6f63ad2fc3d92f87d38f6c140a3af90408de47d667ae7b9ba0dc9ef", - "provision": "./packs/tasknotes.task/0.3.0-rc.18.json", - "provides": [ - { - "id": "tasknotes.task", - "version": "0.3.0-rc.5", - "digest": "sha256:dde71d0d776aa0069ee627fe3c10b1a20f87ba36929a16790598ebfb4e8ebf04" - } - ], - "resource_count": 4, - "display": { - "name": "TaskNotes tasks", - "summary": "Manage portable Markdown tasks, assignments, dates, recurrence, reminders, and time tracking.", - "category": "work", - "audience": "general", - "icon": "square-check-big", - "badges": [ - "TaskNotes compatible" - ] - }, - "installation": { - "visibility": "default", - "recommendation": "integration-managed", - "primary_type": "task", - "caution": "Upgrades the previous starter type while preserving independent customizations. Conflicts or other references to the previous contract block the whole upgrade.", - "types": [ - { - "name": "task", - "label": "Task" - } - ] - } - } - ] -}